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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章