UVA 11489 Integer Game(ゲーム)
966 ワード
タイトルリンク:http://vjudge.net/contest/view.action?cid=46225#problem/H
1つの長さが1000ビットを超えない数を与えるたびに、残りの皆さんの和を3の倍数にして、取れないまで取ることができます.各統計各位は三取余に対して0,1,2を得た.すでに各桁数のとsum;
次にsum%3の値で最初に残りの和を3の倍数にする.
最後にstepのパリティを判断して勝者を確定する.
1つの長さが1000ビットを超えない数を与えるたびに、残りの皆さんの和を3の倍数にして、取れないまで取ることができます.各統計各位は三取余に対して0,1,2を得た.すでに各桁数のとsum;
次にsum%3の値で最初に残りの和を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;
}