sum为所有位数模3的和,cnt[i]为非0数位模3后为i的个数。

1.小红操作时,如果非0数位只有1个,小红输;cnt[sum]!=0时,小红可以删除,反之必输。

2.小紫操作时,cnt[1] == 0 && cnt[2] == 0 && cnt[0] == 0没有非零数位剩下 ⇒ 小紫无法操作 ⇒ 小红赢;

cnt[1] == cnt[2] && cnt[0] > 0余1和余2的数位数量相等,且有余0的数位,这是一个对称局面,小红有必胜策略;

其他情况小紫有必胜策略

#include <iostream>
#include<string>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    string x;
    cin>>x;
    int sum=0;
    int cnt[3]={0};
    for(char c:x){
        int digit=c-'0';
        sum=(sum+digit)%3;
        if(digit!=0)cnt[digit%3]++;
    }
    if(cnt[0]+cnt[1]+cnt[2]==1){
        puts("yukari");
        return 0;
    }
    if(!cnt[sum]){
        puts("yukari");
        return 0;
    }
    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");
    return 0;
}