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;
}

京公网安备 11010502036488号