hdu 4662 MU Puzzle

思路:将所有的字符都变成I,判断I的个数是否是2的幂。设I的个数为a,U的个数为b则有

a+3b+6x=2^K是否有解,也就是a+3b不能是3的倍数。

代码如下:

 1 #include<stdio.h>
 2 #include<cstring>
 3 char str[1000001];
 4 int main(){
 5     int i,t,len,num,sum;
 6     scanf("%d",&t);
 7     while(t--){
 8         scanf("%s",&str);
 9         if(strcmp(str,"MI")==0){
10             puts("Yes");
11             continue;
12         }
13         len=strlen(str);num=0;sum=0;
14         for(i=0;i<len;i++){
15             if(str[i]=='I') sum++;
16             else if(str[i]=='U') sum+=3;
17             else num++;
18         }
19         if(num>1||str[0]!='M'||(sum&1)||sum%3==0)
20             puts("No");
21         else puts("Yes");
22     }
23     return 0;
24 }
View Code
原文地址:https://www.cnblogs.com/xin-hua/p/3248532.html