UVa 11489 (博弈) Integer Game
一个数字能被3整除就等价于这个数的各个数字之和被3整除。
所以一开始的时候先要拿一个能使剩下的数字是3的倍数的数。
然后就一直拿0、3、6、9直到某人不能再拿为止。
1 #include <cstdio> 2 #include <cstring> 3 4 const int maxn = 1000 + 10; 5 char s[maxn]; 6 int a[3]; 7 8 int main() 9 { 10 //freopen("in.txt", "r", stdin); 11 int T; 12 scanf("%d", &T); getchar(); 13 for(int kase = 1; kase <= T; kase++) 14 { 15 memset(a, 0, sizeof(a)); 16 int sum = 0; 17 gets(s); 18 for(int i = 0; i < strlen(s); i++) 19 { 20 int x = (s[i] - '0') % 3; 21 sum += x; 22 a[x]++; 23 } 24 25 sum %= 3; 26 if(a[sum] == 0) { printf("Case %d: %c\n", kase, 'T'); continue; } 27 int turn = a[0] + (int)(!(sum == 0)); 28 turn %= 2; 29 printf("Case %d: %c\n", kase, turn ? 'S' : 'T'); 30 } 31 32 return 0; 33 }