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

 

 

 

你可能感兴趣的:(HDU)