http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2190

思路 : 这个题,一开始以为是博弈,以为大概几行核心代码就搞的定,结果应该算是一个简单数学小题吧,考的是思维。按题中要求,可以得出,主要分为两种情况,一种是考虑这一数串的每个数字之和能被三整除和不能被三整除的,如果能被三整除,就判断被3整除的数字的个数有奇数个还是偶数个,如果是奇数个就是妖怪输。而不能被三整除的时候,就要去看和对3取余余几 ,如果余的数在原串里找得到或者是原串某个数对3取余与这个余数相等,那第一步的WP就必须拿掉这个数才符合规则,所以剩下的又是判断剩下的数中能被3整除的数是奇数个还是偶数个

#include<iostream>
#include<string>
using namespace std ;
int main()
{
int n ;
cin>>n;
for(int i = ; i < n ; i++)
{
string str ;
cin>>str ;
int sum = ;
int cnt = ;
for(int j = ; j < str.length() ; j++)
{
sum += (str[j]-'') ;
if(str[j] % == )
cnt++ ;
}
int flag = ,mark = ;
if(sum % == )
{
if(cnt % == )
{
flag = ;
}
}
else
{
int len = sum% ;
for(int j = ; j < str.length() ; j++)
{
if(len == (str[j]-'')%)
{
mark = ;
break ;
}
}
if(mark)
{
if(cnt% == )
{
flag = ;
}
}
}
cout<<"Case "<<i+<<": ";
if(flag)
cout<<"T"<<endl ;
else
cout<<"S"<<endl ;
}
return ;
}
05-11 13:20