您的位置:首页 > 其它

UVA 11489 Integer Game(博弈)

2014-05-22 20:02 351 查看
题目链接:http://vjudge.net/contest/view.action?cid=46225#problem/H

题意就是给定一个长度不超过1000位的数 每次可以取其中的一个 使剩下的各位的和为3的倍数,直到不能取为止; 分别统计各位对三取余得到0,1,2;已经各位数的和sum;

然后通过sum%3的值第一次取谁使剩下的和为三的倍数;

最后再判断step的奇偶性来确定赢家。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char a[1010];
int num[3];
int main()
{
int t,x=0;
cin>>t;
while(t--){
printf("Case %d: ",++x);
cin>>a;
num[0]=num[1]=num[2]=0;
int sum=0;
int len=strlen(a);
for(int i=0;i<len;i++){
sum+=a[i]-'0';
num[(a[i]-'0')%3]++;
}
int step=0;
if(num[sum%3]){
num[sum%3]--;
step=1;
}
if(step)
step+=num[0];
if(step%2)
puts("S");
else
puts("T");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: