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 }
代码君

 

posted @ 2015-03-22 22:50  AOQNRMGYXLMV  阅读(226)  评论(0编辑  收藏  举报