PAT甲級 1023 Have Fun with Numbers (20分)

昨天剛學的字符串的reverse,沒想到今天就用上了,先將輸入的字符進行字數統計,然後X2,再進行一次字符統計,相同yes,反之no。

#include<bits/stdc++.h>
using namespace std;
main()
{
	char in[25];
	int voc1[10]={0};
	int voc2[10]={0};
	cin>>in;
	string res=in; //這裏注意要跟輸入的長度相同,直接默認初始化是不行的。 
	int i;
	for(i=0;in[i];i++)
	{
		voc1[in[i]-'0']++;
	}
	int flag=0;
	int length = i;
	for(i=length-1;i>=0;i--)
	{
		res[length-1-i] = (in[i] - '0') * 2 + flag +'0';
		flag = 0;
		if(res[length-1-i] > '9')
		{
			res[length-1-i] -= 10;
			flag = 1;	
		}
		voc2[res[length-1-i] - '0'] ++;
	}
	if(flag==1)
	{
		res += '1';
		voc2[1] ++;
	}
	
	reverse(res.begin(),res.end());
	
	flag = 1;
	for(i=0;i<10;i++)
	{
		if(voc1[i]!=voc2[i])
		{
			flag=0;
			break;
		}
	}
	if(flag==1)
	printf("Yes\n");
	else
	printf("No\n");
	cout<<res;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章