链接:点击打开链接
题意:博弈,两人先后取出一个数看剩余数的和是否能整除3,如果没有数可取则为输;
代码:
#include<cstring> #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> using namespace std; int main(){ int a[5]; int t,i,j,k,l,sum,temp; char str[10005]; cin>>t; for(k=1;k<=t;k++){ cin>>str; sum=0; memset(a,0,sizeof(a)); l=strlen(str); for(i=0;str[i]!='\0';i++){ temp=str[i]-'0'; a[temp%3]++; sum+=temp; } printf("Case %d: ",k); temp=0; if(a[sum%3]){ temp=1; a[sum%3]--; } if(temp) //判断先手是否有机会取到第一回,例如322这类的数,对3取余为1 temp+=a[0]; //但每一位都没有对三取余为1的数字,所以输出T,同时避免只有一位数的情况 if(temp%2!=0) cout<<'S'<<endl; else cout<<'T'<<endl; } return 0; }