题意就不说了,解法是把原串中所有的U都变成I统计I的个数,如果个数是奇数且不是1,就输出No 如果是偶数就除二,若变成了奇数就-3,再变成偶数就除二,直到小于2为止
若最终的结果是1就是Yes,否则就是No,要注意的是原串中有且仅有第一个字符是M
代码如下:
/********* PRO: hdu 4662 TIT: MU Puzzle TIM: 13/8/9 AUT: UKean EMA: huyocan@163.com *********/ #include#include #include #include using namespace std; char str[1000006]; int inline read() { scanf("%s",str); return 1; } void deal() { int Sum_I=0,Str_Len=strlen(str); for(int i=1;i 1) if(Sum_I&1) Sum_I-=3; else Sum_I/=2; if(Sum_I==1) printf("Yes\n"); else printf("No\n"); } int main() { int T;scanf("%d",&T ); while(T--) { read(); deal(); } return 0; }