UVa 11489 Integer Game

来源:互联网 发布:域名怎么交易 编辑:程序博客网 时间:2024/05/22 12:58

从第一步之后,每个状态的和都是3的倍数,拿完之后的和也是3的倍数,说明拿的这个数一定是3的倍数。统计一下3的倍数的数量,根据第一步拿的情况分情况讨论判断奇偶性就行了。

注意最后只剩下一个数即使不是3的倍数也可以拿。


代码:

#include <iostream>#include <cstdio>#include <cstring>using namespace std;#include <algorithm>#define LL long longchar s[1005];int a[1005];int kase=1;int main(){int T;cin>>T;while(T--){scanf("%s",s);printf("Case %d: ",kase++);int len=strlen(s);int thr=0;int sum=0;for(int i=0;i<len;i++){a[i]=int(s[i]-'0');sum+=a[i];if(a[i]%3==0) thr++;}if(len==1) printf("S\n");else if(sum%3==0){if(thr&1) printf("S\n");else printf("T\n");}else {bool flag=0;for(int i=0;i<len;i++){if((sum-a[i])%3==0){flag=1;break;}}if(!flag)printf("T\n");else {if((len-thr)==2){if(thr&1){printf("S\n");}else printf("T\n");}else {if(thr&1)printf("T\n");else printf("S\n");}}}}return 0;}

0 0