您的位置:首页 > 其它

Uva11489 Integer Game

2013-08-07 22:51 330 查看
脑筋急转弯题:3的余数只有0,1,2那么只要统计三种余数的个数:如445666666 余数为0的个数为6,余数为1的个数为2,余数为2的个数为1.如果原来这个数恰好能被3整除,那么只要统计它余数为0的个数,如果是奇数,那么先者胜,因为除去余数为0的那个数之后,剩下的数必定可以被3整除,但是只要拿掉一个数,这个数一定不能被3整除。当原来这个余数为1,2的时候思路与前面类似。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int main(){

int ncase,T=1;
cin >> ncase;
string num;
while(ncase--){
cin >> num;
int sum = 0;
int a=0,b=0,c=0;
bool flag = 0;
for(int i = 0; i < num.size(); i++){
int tmp = num[i]-'0';
sum += tmp;
if(tmp%3==0){
++a;
}
else if(tmp%3==1){
++b;
}else{
++c;
}
}
if(sum%3==0){
if(a%2!=0){
flag =1;
}

}
else if(sum%3==1){
if(b>0 && a%2==0){
flag = 1;
}
}else{
if(c>0 && a%2==0){
flag = 1;
}
}
if(flag){
printf("Case %d: S\n",T++);
}else{
printf("Case %d: T\n",T++);
}

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: