做网站的软件叫81什么来着,班级网页制作素材,新余市建设局网站,重庆新闻联播历年片头题目连接#xff1a;http://acm.hust.edu.cn/vjudge/contest/125308#problem/H 题目大意#xff1a;下面是一个二人小游戏#xff1a;桌子上有M堆扑克牌#xff1b;每堆牌的数量分别为Ni(i1…M)#xff1b;两人轮流进行#xff1b;每走一步可以任意选择一堆并取走其中的任… 题目连接http://acm.hust.edu.cn/vjudge/contest/125308#problem/H 题目大意下面是一个二人小游戏桌子上有M堆扑克牌每堆牌的数量分别为Ni(i1…M)两人轮流进行每走一步可以任意选择一堆并取走其中的任意张牌桌子上的扑克全部取光则游戏结束最后一次取牌的人为胜者。 现在我们不想研究到底先手为胜还是为负我只想问大家 ——“先手的人如果想赢第一步有几种选择呢” 这是一个尼姆博弈的问题涉及到了一个运算Xor(异或运算)Xor是位运算的一种1Xor10,1Xor01,0Xor11.为运算可以用于两个数之间其定义就是把两个数转化成二进制然后一位一位的进行位运算。c中用^表示。例如1^5(001)^(101)100(4)。Xor具有交换律结合律 而且是本身的逆运算(a^b^ab),满足消去律。 从一个非奇异局势向一个奇异局势转换的方式可以是 1使 a cb 2使 b ac 3使 c ab #includeiostream
#includecstdio
using namespace std;
#define N 105
int d[N];
int main()
{int n;while(scanf(%d,n)n!0){int m0,sum0;for(int i1;in;i){scanf(%d,d[i]);mm^d[i];}//if(m0) printf(奇异局势)for(int i1;in;i){ //这里有个括号if((m^d[i])d[i]) //如果m^d[i]d[i]说明了的d[i]中可以取出一个数sum; //使得的d[i] 变为m^d[i],成为奇异局势}printf(%d\n,sum);}return 0;
} 转载于:https://www.cnblogs.com/Twsc/p/5738327.html