程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 4662 MU Puzzle 多校最水的一題

HDU 4662 MU Puzzle 多校最水的一題

編輯:C++入門知識

題意就不說了,解法是把原串中所有的U都變成I統計I的個數,如果個數是奇數且不是1,就輸出No 如果是偶數就除二,若變成了奇數就-3,再變成偶數就除二,直到小於2為止

若最終的結果是1就是Yes,否則就是No,要注意的是原串中有且僅有第一個字符是M

代碼如下:

 

/*********
PRO: hdu 4662
TIT: MU Puzzle
TIM: 13/8/9
AUT: UKean
EMA: [email protected]
*********/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>

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<Str_Len;i++)
	{
		if(str[i]=='I') Sum_I++;
		else if(str[i]=='U') Sum_I+=3;
		else {Sum_I=0; break;}
	}
	if((Sum_I&1&&Sum_I!=1)||str[0]!='M') Sum_I=0;
	while(Sum_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;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved