东华大学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;
}