比较豪玩的题。
显然可以先去掉字符串中的所有 ,并且我们只需关注总和模
的结果。
记 为
中模
为
的数字的数量。
先讨论能否执行第一步:
- 如果一开始只有一个非
数字或者无法使得总和是
的倍数,则小红第一步就无法操作,小紫胜。否则删去对应的数字。
接下来:
-
如果
,则小紫可以先选择多的那一个去掉,可以发现在
轮时,小红将无法使得总和是
的倍数,小紫胜。
-
否则,在
轮后,如果还有
,此时小紫无法操作,小红胜;否则小紫胜。
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");
}
}

京公网安备 11010502036488号