码迷,mamicode.com
首页 > 其他好文 > 详细

Nim游戏

时间:2017-11-28 19:55:40      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:stream   不为   else   main   ...   space   typedef   include   偶数   

{a1,a2,a3,a4.......an}n推石头,A先拿,若a1^a2^a3^a4^.....^an==0,B胜

证明:因为异或后的数代表所有石头数在二进制表示后,对应位上有偶数个还是奇数个1;

  比如5(d)=101(b)    ,7(d)=111(b),    7^5=010(b)    ,第一个0代表7和5在这位上有偶数个0;

  所以如果异或后为0,则A进行操作后,异或不为0,B必能使异或重新变为0;最后只能B取到0(也就是拿光);

  

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
#define eps 1e-8

int main()
{    
    int n,k;
    cin>>n;
    int j=0;
    for(int i=0;i<n;i++){
        cin>>k;
        j^=k;
    }
    if(!j)cout<<"B";
    else cout<<"A";
    return 0;
}

 

Nim游戏

标签:stream   不为   else   main   ...   space   typedef   include   偶数   

原文地址:http://www.cnblogs.com/Gsimt/p/7911443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!