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("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/XDJjy/p/3650640.html