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 唉
转载请注明出处:寻找&星空の孩子
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int T,len,ca=1; 6 scanf("%d",&T); 7 char a[10005]; 8 9 while(ca<=T) 10 { 11 scanf("%s",a); 12 len=strlen(a); 13 int cnt[3]={0,0,0}; 14 for(int i=0;i<len;i++) 15 { 16 int tp=a[i]-'0'; 17 cnt[tp%3]++; 18 } 19 printf("Case %d: ",ca++); 20 int mo=(cnt[1]+cnt[2]*2)%3; 21 if(mo) 22 { 23 if(cnt[mo]>0)//11111 24 { 25 if(cnt[0]&1) printf("T\n"); 26 else printf("S\n"); 27 } 28 else 29 { 30 printf("T\n"); 31 } 32 } 33 else 34 { 35 if(cnt[0]&1) printf("S\n"); 36 else printf("T\n"); 37 } 38 } 39 return 0; 40 }
转载请注明出处:http://www.cnblogs.com/yuyixingkong/
自己命运的掌控着!