东华大学2020年程序设计竞赛F题:https://ac.nowcoder.com/acm/contest/5891/F
首先观察发现每次改变某个串,该串的1的数量都会恰变动1。因此统计1的数量。将题目改为每次改变若干串中1的数量(不能一直+1),最后所有串都为0时移动的人输。
思路和拿石子相同:尽量塑造对称的情况。第一轮时变动所有的1数量为奇数的串,然后模仿对手的操作即可。因此如果一开始所有串1数量全为偶数,则后手必胜。
应该属于比较简单的NIM游戏。
#include<stdio.h>
int main()
{
int t;
char c;
int x,add;
int p[11];
scanf("%d",&t);
while(t--)
{
for(add=0;add<11;add++)
p[add]=0;
scanf("%d",&x);
c=getchar();
for(add=1;add<=x;)
{
c=getchar();
if(c==10)
{
add++;
}
else
{
p[add]+=c-'0';
}
}
for(add=1;add<=x;add++)
{
//printf("%d ",p[add]);
if(p[add]%2!=0)
break;
}
if(add==x+1)
printf("kgNB\n");
else
printf("sdzNB\n");
}
return 0;
}
京公网安备 11010502036488号