UVA 11489 Integer Game(博弈)

来源:互联网 发布:食品行业数据 编辑:程序博客网 时间:2024/05/22 05:06

题目链接:http://vjudge.net/contest/view.action?cid=46225#problem/H

题意就是给定一个长度不超过1000位的数 每次可以取其中的一个 使剩下的各位的和为3的倍数,直到不能取为止; 分别统计各位对三取余得到0,1,2;已经各位数的和sum;

然后通过sum%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;}


0 0
原创粉丝点击