Problem D: 穿越明朝之富豪杨
Time Limit: 1 Sec Memory Limit: 128 MBDescription
一个月黑风高阴森恐怖的晚上,富豪杨像往常一样在皇家公共厕所,唱着他最拿手的生日快乐,唱到高音,他穿越到了明朝的紫禁城,转角遇到了朱元璋,两人一见
如故,明太祖想册封他为大公公,但富豪杨只想安安静静的做个ACMBOY,为了说服对方,两人一起进行了一次周易游戏。
拿一段长度不超过1000位的数字,两个人进行一场游戏, 分别从数字中去掉一个数字, 并且去掉之后, 剩下的数字的每一位数相加起来的总和是3的倍数,最后不能取, 或是没有数字了, 那人就输了,另一个便胜利。 富豪杨先手。
拿一段长度不超过1000位的数字,两个人进行一场游戏, 分别从数字中去掉一个数字, 并且去掉之后, 剩下的数字的每一位数相加起来的总和是3的倍数,最后不能取, 或是没有数字了, 那人就输了,另一个便胜利。 富豪杨先手。
Input
第一行是一个整数位T(T<60)是用例数,每个用例有一个整数为N。N最大只有1000位,数字的每一位都不包含0。
Output
对应每个用例,如果是富豪杨赢,显示出"Y"否则"Z"。
Sample Input
4
4
33
771
22263258
Sample Output
Case 1: Y
Case 2: Z
Case 3: Z
Case 4: Z
HINT
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int main() 5 { 6 int n,t=1; 7 scanf("%d",&n); 8 getchar(); 9 while(n--) 10 { 11 char a[1010]; 12 int flag[1010],len,m=0,ans=0; 13 gets(a); 14 len=strlen(a); 15 memset(flag,0,sizeof(flag)); 16 for(int i=0; i<len; i++) 17 { 18 m+=a[i]-'0'; 19 } 20 if(len==1) 21 { 22 printf("Case %d: Y ",t++); 23 continue; 24 } 25 for(int i=0; i<len; i++) 26 { 27 for(int j=0; j<len; j++) 28 { 29 if(flag[j]==0&&(m-(a[j]-'0'))%3==0) 30 { 31 flag[j]=1; 32 m-=(a[j]-'0'); 33 ans++; 34 } 35 } 36 } 37 if(ans%2==0) 38 printf("Case %d: Z ",t++); 39 else 40 printf("Case %d: Y ",t++); 41 } 42 return 0; 43 }