HDU1850 Being a Good Boy in Spring Festival 博弈

/*
2.可选步数为任意步,SG(x) = x; 
本题中每一堆都可以选任意个,所以每一堆的SG值都是所剩余的个数。
最后结果是所有堆的SG值异或的结果。令ans = 所有堆的SG值异或的结果
如果ans == 0,则是必败点。
如果ans != 0,使取后结果为0的策略是必胜策略
具体怎么取呢?
每一堆的数值与ans相异或,所得的结果就是这一堆可以取的数量。
但是,如要这一堆数量没有这么多,就不可以这么取
*/
#include   
using namespace std;  
int value[101];  
int main ()  
{  
    int n,sum,count,i;  
    while (cin>>n && n)  
    {  
        sum=0;  
        for (i=0;i>value[i];  
            sum^=value[i];  
        }  
        count=0;  
        for (i=0;isum) count++;  
            sum^=value[i];  
        }  
        cout<

你可能感兴趣的:(ACM解题报告)