比较豪玩的题。

显然可以先去掉字符串中的所有 ,并且我们只需关注总和模 的结果。

中模 的数字的数量。

先讨论能否执行第一步:

  • 如果一开始只有一个非 数字或者无法使得总和是 的倍数,则小红第一步就无法操作,小紫胜。否则删去对应的数字。

接下来:

  • 如果 ,则小紫可以先选择多的那一个去掉,可以发现在 轮时,小红将无法使得总和是 的倍数,小紫胜。

  • 否则,在 轮后,如果还有 ,此时小紫无法操作,小红胜;否则小紫胜。

void solve(){
    vector<ll> cnt(3);
    ll sum = 0;
    char ch;
    while((ch = getchar()) != '\n'){
        if(ch=='0') continue;
        cnt[(ch-'0')%3]++;
        sum = (sum + ch-'0') % 3;
    }
    if(cnt[0]+cnt[1]+cnt[2]==1){
        puts("yukari");
        return;
    }
    if(!cnt[sum]){
        puts("yukari");
        return;
    }
    else{
        cnt[sum]--;
    }
    if(cnt[1] == cnt[2] && cnt[2] == 0 && cnt[0] == 0){
        puts("kou");
    }
    else if(cnt[1] == cnt[2] && cnt[0]){
        puts("kou");
    }
    else{
        puts("yukari");
    }
}