题目描述:
有n堆石子,第i堆有Ai颗,两个人轮流取,每次必须从一堆中取走大于0颗石子,并且可以从这堆石子随便拿一些石子分到其它堆,数目不限(可以为0),但是已经没有石子的堆不能再被放入石子。谁取完谁赢,判断先取方是否有必胜策略。
题目分析:
然而我并没有用高精度?
然而scanf会WA,用读入优化就算爆了也是相等的。
所以就水过了~
#include<cstdio>
#include<cctype>
#include<cstring>
#include<map>
#include<algorithm>
#define maxn 105
using namespace std;
template<class T>inline void read(T &a){
char c;while(!isdigit(c=getchar()));
for(a=c-'0';isdigit(c=getchar());a=a*10+c-'0');
}
int n,T,cnt;
map<int,bool>a;
int main()
{
while(~scanf("%d",&n)){
a.clear(),cnt=0;
for(int i=1,x;i<=n;i++){
read(x);
if(a[x]) a[x]=0,cnt--;
else a[x]=1,cnt++;
}
puts(cnt?"first player":"second player");
}
}