标签:描述 its ... lin printf git 个数 span define
有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数。两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏。问先手是否必胜。
多组输入,第一行一个整数u代表数据组数(1<=u<=10)
接下来共2*u行,每两行代表一组数据:
第一行只有一个整数n(1<=n<=1000),表示石子堆数;
第二行有n个整数用空格隔开,第i个整数ai表示第i堆的石子个数,保证a1<=a2<=a3...<=an。
对于每组数据,保证石子总数不超过10000。
输出u行,如果第i组数据先手必胜,输出“TAK”,否则输出“NIE”。
2
2
2 2
3
1 2 4
NIE
TAK
none
#include<bits/stdc++.h>
#define LL long long
LL in() {
char ch; LL x = 0, f = 1;
while(!isdigit(ch = getchar()))(ch == '-') && (f = -f);
for(x = ch ^ 48; isdigit(ch = getchar()); x = (x << 1) + (x << 3) + (ch ^ 48));
return x * f;
}
int a[1005050];
int main() {
for(int T = in(); T --> 0;) {
int n = in();
int ans = 0;
for(int i = 1; i <= n; i++) a[i] = in();
for(int i = n; i >= 1; i--) a[i] -= a[i - 1];
//注意要反着求
for(int i = n; i >= 1; i -= 2) ans ^= a[i];
printf(ans? "TAK\n" : "NIE\n");
}
return 0;
}
P3480 [POI2009]KAM-Pebbles 阶梯NIM
标签:描述 its ... lin printf git 个数 span define
原文地址:https://www.cnblogs.com/olinr/p/10482990.html