【PAT乙級本題及び訓練集】【1003】合格します!(20)

1216 ワード

この問題は少し穴があいていて、最初は文字列でやっていたが、後で発見したのは実は法則を探していた.
  
#include<stdio.h>
#include<string.h>
char a[1010];
int main()
{
	int num;
	int count1,count2,count3;
	scanf("%d",&num);
	while(num--)
	{
		scanf("%s",a);
		count1=count2=count3=0;
		int i,len=strlen(a);
		int flag=0;
		int cnt=0;
		for(i=0;i<len;++i)
		{
			if(flag==0)
			{
				if(a[i]=='A')
				{
					count1++;
					continue;
				}
				else if(a[i]=='P')
				{
					flag++;
					continue;
				}
				else if(a[i]=='T')
				{
					cnt=1;
					break;
				}
			}
				
			if(flag==1)
			{
				if(a[i]=='A')
				{
					count2++;
					continue;
				}
				else if(a[i]=='T')
				{
					flag++;
					continue;
				}
				else if(a[i]=='P')
				{
					cnt=1;
					break;
				}
			}
			if(flag==2)
			{
				if(a[i]=='A')
				{
					count3++;
					continue;
				}
				else if(a[i]!='A')
				{
					cnt=1;
					break;
				}
			}
		}
		if(!cnt)
		{
			if(flag==2&&count1*count2==count3&&count2)
			printf("YES
"); else printf("NO
"); } else printf("NO
"); } return 0; }