题目:http://acm.hust.edu.cn/vjudge/problem/19956
大致意思就是给你一个数,两个人每次从中抽出一位数,然后使剩下的数是3的倍数,一直抽到不能抽为止,谁不能抽了谁就输,问你最后是谁赢了。
思路:第一次抽一位数之后,剩下的数是3的倍数,3的倍数再抽一个还要保证是3的倍数,那么抽的那一个数也一定是3的倍数。
于是,代码如下:
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1e4+5;
char s[maxn];
int n;
int main()
{
scanf("%d",&n);
for(int k=1;k<=n;k++)
{
int sum=0;
int l=0;
int p=0;
scanf("%s",s);
int str=strlen(s);
for(int i=0;i<str;i++)
sum+=s[i]-'0';
int x=sum%3;
for(int i=0;i<str;i++)
{
if((s[i]-'0'-x)%3==0)//第一次抽数
{
p=1;
l=1;
s[i]='a';
break;
}
}
if(p)//第一次一定抽出一个,如果没有,就T胜利,后面的都不用算了
{
for(int i=0;i<str;i++)
{
if(s[i]=='a')
continue;
if((s[i]-'0')%3==0)//一直寻找,看能否找到一个数是3的倍数
{
if(l==0)
l=1;
else
l=0;
}
}
}
if(l==0)
printf("Case %d: T\n",k);
else
printf("Case %d: S\n",k);
}
}