题目链接:11489 - Integer Game
题意:一数字,两个人去取数字位上的数字,谁先不能取掉一个数后,使得数字是3的倍数就输了,S先手,T后手问谁会赢
思路:先考虑第一个取掉的情况,然后记录3倍数的数(即3,6,9)然后看看 % 2是奇数还是偶数就能判断谁赢了,因为两个人之后取肯定是取3倍数的数
代码:
#include <stdio.h>
#include <string.h>
const int N = 1005;
int t, n, div3, sum, i, used;
char num[N];
bool judge() {
for (i = 0; i < n; i++) {
if ((sum - (num[i] - '0')) % 3 == 0) {
used = i;
return true;
}
}
return false;
}
int main() {
int cas = 0;
scanf("%d", &t);
while (t--) {
div3 = sum = 0;
scanf("%s", num);
n = strlen(num);
for (i = 0; i < n; i++)
sum += (num[i] - '0');
printf("Case %d: ", ++cas);
if (!judge()) printf("T\n");
else {
for (i = 0; i < n; i++) {
if (used == i) continue;
if ((num[i] - '0') % 3 == 0)
div3++;
}
if (div3 % 2) printf("T\n");
else printf("S\n");
}
}
return 0;
}