X-man

导航

NIM博弈的必胜取法

#include<stdio.h>
const int Max = 100000;
int a[Max];
int main()
{
    int i,n,ans;
    int tmp;
    while(scanf("%d",&n)!=EOF)
    {
        ans=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            ans^=a[i];
        }
        for(i=0;i<n;i++)
        {
            tmp=ans^a[i];
            if(tmp<=a[i])
            {
                a[i]=tmp;
                break;
            }
        }
        for(i=0;i<n;i++)
            printf("%d ",a[i]);
        printf("\n");
    }
    return 0;
}

 

posted on 2014-04-07 20:39  雨钝风轻  阅读(196)  评论(0编辑  收藏  举报