Hdu_1850 Nim博弈_求初始时有多少种走法取胜
2013-08-08 19:00
225 查看
hdu 1850 Being a Good Boy in Spring Festival
问题:有n堆石子,每堆石子有ai个(i(1<=ai<=1000000),游戏规则:两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。
现在我想问大家,“先手的人如果想赢,第一步有几种选择呢?”
Input
输入数据包含多个测试用例,每个测试用例占2行,首先一行包含一个整数M(1<M<=100),表示扑克牌的堆数,紧接着一行包含M个整数Ni(1<=Ni<=1000000,i=1…M),分别表示M堆扑克的数量。M为0则表示输入数据的结束。
Output
如果先手的人能赢,请输出他第一步可行的方案数,否则请输出0,每个实例的输出占一行。
Sample Input
3
5 7 9
0
Sample Output
1
分析:枚举(n-1)堆的nim和,如果再加一堆,这堆石子数为a[ i ], a[ i ]必须大于等于nim和,这样a[
i ]减去一个数就可以使总的和为零。统计这样的a[ i ]个数,即为答案。
问题:有n堆石子,每堆石子有ai个(i(1<=ai<=1000000),游戏规则:两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。
现在我想问大家,“先手的人如果想赢,第一步有几种选择呢?”
Input
输入数据包含多个测试用例,每个测试用例占2行,首先一行包含一个整数M(1<M<=100),表示扑克牌的堆数,紧接着一行包含M个整数Ni(1<=Ni<=1000000,i=1…M),分别表示M堆扑克的数量。M为0则表示输入数据的结束。
Output
如果先手的人能赢,请输出他第一步可行的方案数,否则请输出0,每个实例的输出占一行。
Sample Input
3
5 7 9
0
Sample Output
1
分析:枚举(n-1)堆的nim和,如果再加一堆,这堆石子数为a[ i ], a[ i ]必须大于等于nim和,这样a[
i ]减去一个数就可以使总的和为零。统计这样的a[ i ]个数,即为答案。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { int n,sum,s; int dig[102]; while(cin>>n&&n) { sum=0; for(int i=0;i<n;i++) { scanf("%d",&dig[i]); sum^=dig[i]; } if(sum==0) printf("0\n"); else { int cnt=0; for(int i=0;i<n;i++) { s=sum^dig[i]; if(dig[i]>=s) cnt++; } printf("%d\n",cnt); } } return 0; }
相关文章推荐
- HDU 1850 (Nim博弈 取胜方案数) Being a Good Boy in Spring Festival
- HDU - 1850 ——Being a Good Boy in Spring Festival(Nim博弈)
- HDU 1850 Being a Good Boy in Spring Festival 【Nim博弈】
- [ACM] hdu 1850 Being a Good Boy in Spring Festival(Nim博弈)
- hdu1850 Being a Good Boy in Spring Festival(nim博弈)
- HDU 1850 Being a Good Boy in Spring Festival (Nim博弈求第一步选择数)
- 浅谈Nim博弈 附hdu 2176 取(m堆)石子游戏 ,hdu 1850 Being a Good Boy in Spring Festival
- HDU 1850 Being a Good Boy in Spring Festival 在春节做乖孩子(Nim博弈,微变形)
- HDU 1850 Being a Good Boy in Spring Festival(Nim博弈)
- HDU 1850 Being a Good Boy in Spring Festival(Nim博弈)
- [Nim博弈]hdu 1850 Being a Good Boy in Spring Festival
- HDU 1850 - Being a Good Boy in Spring Festival【Nim博弈】
- HDU 1850 Being a Good Boy in Spring Festival (Nim博弈)
- hdu1850 Being a Good Boy in Spring Festival 博弈 nim-sum定理
- HDU-1850-Being a Good Boy in Spring Festival 【nim博弈】
- HDU - 1850 Nim博弈
- 初始博弈【二】Nim(hdu 1849,poj1704)
- HDU 1850 Being a Good Boy in Spring Festival【标准Nim博弈,先手赢的方案数】
- HDU 1850 Being a Good Boy in Spring Festival(Nim博弈)
- hdu 1850 Being a Good Boy in Spring Festival (Nim博弈求第一步走法数)