一个数字能被3整除就等价于这个数的各个数字之和被3整除。
所以一开始的时候先要拿一个能使剩下的数字是3的倍数的数。
然后就一直拿0、3、6、9直到某人不能再拿为止。
#include <cstdio>
#include <cstring> const int maxn = + ;
char s[maxn];
int a[]; int main()
{
//freopen("in.txt", "r", stdin);
int T;
scanf("%d", &T); getchar();
for(int kase = ; kase <= T; kase++)
{
memset(a, , sizeof(a));
int sum = ;
gets(s);
for(int i = ; i < strlen(s); i++)
{
int x = (s[i] - '') % ;
sum += x;
a[x]++;
} sum %= ;
if(a[sum] == ) { printf("Case %d: %c\n", kase, 'T'); continue; }
int turn = a[] + (int)(!(sum == ));
turn %= ;
printf("Case %d: %c\n", kase, turn ? 'S' : 'T');
} return ;
}
代码君