http://acm.pku.edu.cn/JudgeOnline/problem?id=2975
题目意思大概是这样的:
就是有N堆石子,每人至少取一个在一堆里不能同时在两堆里面同时取,要你求出第一个人赢的方案。
#include<iostream>
using namespace std;
int main()
{
int T,i,flag,s,a[1005];
while(cin>>T,T)
{
s=0;
flag=0;
for(i=0;i<T;i++)
{
cin>>a[i];
s^=a[i];
}
for(i=0;i<T;i++)
if(
flag++;
cout<<flag<<endl;
}
return 0;
}
这个只要满足这个条件a[i]>(a[i]^s)就可以了,注意运算优先级不要少了括号,此题还有一种变相的,(http://acm.hdu.edu.cn/showproblem.php?pid=2176)就是要你输出第一个人赢的方案,同样也是满足刚才的条件。在a[i]这堆取k=s^a[i];//s和上面的一样的。