Integer Game(UVA11489)3的倍数

K - Integer Game

Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu

 

 

 

 

题意:在n中取数字,使剩下的数是3的倍数,不能取则失败。

思路:如果能使当前数为3的倍数,数字和必是3的倍数。要保持这种状态,先对每一位对3取余,统计cnt[0],cnt[1],cnt[2]; 的个数,整个串能否被3整除取决于ans=(cnt[1]+cnt[2]*2)%3;分情况讨论,如果能整除,则,判断cnt[0]的个数,如果是偶数个则T,否则S;如果不能整除,则,要特判cnt[ans]的个数是否大于0;<eg:11111>;大于0,则cnt[0]的个数为偶数个则S,否则T;等于0则T;

 

 

一直坑在11111这种情况!o(︶︿︶)o 唉

 

转载请注明出处:寻找&星空の孩子

 

#include<stdio.h>
#include<string.h>
int main()
{
    int T,len,ca=1;
    scanf("%d",&T);
    char a[10005];

    while(ca<=T)
    {
        scanf("%s",a);
        len=strlen(a);
        int cnt[3]={0,0,0};
        for(int i=0;i<len;i++)
        {
            int tp=a[i]-'0';
            cnt[tp%3]++;
        }
        printf("Case %d: ",ca++);
        int mo=(cnt[1]+cnt[2]*2)%3;
        if(mo)
        {
            if(cnt[mo]>0)//11111
            {
                if(cnt[0]&1) printf("T\n");
                else printf("S\n");
            }
            else
            {
                printf("T\n");
            }
        }
        else
        {
            if(cnt[0]&1) printf("S\n");
            else printf("T\n");
        }
    }
    return 0;
}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值