uva 11489 - Integer Game(数论)

来源:互联网 发布:淘宝的人工客服在哪里 编辑:程序博客网 时间:2024/05/04 09:38

题目链接:uva 11489 - Integer Game


题目大意:给出若干个数,两个来玩一个游戏,轮流从这若干个数中移除一个数,使得剩下的数字之和是3的倍数(0也算,即一个也不剩的情况),直到有一人无法移除时,另一个人胜利。


解题思路:先将各个数读入并且计数,除了第一次要特殊处理,剩下的这能移除3,6,9。


#include <stdio.h>#include <string.h>const int N = 1005;int s, n, c[20];void init () {s = 0;memset(c, 0, sizeof(c));char str[N];scanf("%s", str);n = strlen(str);for (int i = 0; i < n; i++) {int a = str[i] - '0';s += a;c[a]++;}}bool judge () {int t = s % 3;bool flag = true;for (int i = t; i < 10; i += 3) if (c[i]) {flag = false;c[i]--;break;}if (flag) return false;int cnt = c[3] + c[6] + c[9];return !(cnt&1);}int main () {int cas;scanf("%d", &cas);for (int i = 1; i <= cas; i++) {init ();printf("Case %d: %c\n", i, judge() ? 'S' : 'T');}return 0;}




1 0
原创粉丝点击