杭电2176

来源:互联网 发布:华为网络技术学院 编辑:程序博客网 时间:2024/05/20 11:20
#include<stdio.h>#define maxn 200000int a[maxn];int main(){    int n,i,sum,sum2;    while(scanf("%d",&n),n)    {        sum=0;        for(i=0;i<n;i++)        {            scanf("%d",&a[i]);            sum^=a[i];        }        if(sum==0)        {            printf("No\n");            continue;        }        else        {            printf("Yes\n");            for(i=0;i<n;i++)            {                if(a[i]>(sum^a[i]))                {                    sum2=0;                    sum2=sum;                    sum2=sum2^a[i];                    printf("%d %d\n",a[i],sum2);//这里就是找到第一次取,可以取胜的方法!                }            }        }    }    return 0;}

S=3^6^9           a^a=0  a^b=c->

3^6=5, 在9里拿掉4个使得剩5个,这样就使得S=0

S^9=3^6^9^9=3^6

好好理解尼姆博弈就知道了!