标签:
#include<stdio.h>
#include<string.h>
char str[30]; //输入的数字
int tmp[30]; //*2后逆序的数字
int cntstr[10]; //输入数字0-9的个数
int tmpI=0,jin=0; //*2的时候的int数组下标和进位数
void Double(char* str,int len1)
{
memset(tmp,0,sizeof(tmp)); //将str*2并按个位在左,高位在右方式存储
for(int i=len1-1 ; i>=0 ; --i)
{
int now=jin+(str[i]-‘0‘)*2; //【skill】要变成数字,-‘0‘而不是+‘0‘
tmp[tmpI++]=now%10;
jin=now/10;
}
if(jin!=0) //最后进位存在,则进,不存在,就不进
tmp[tmpI++]=jin;
}
int main()
{
scanf("%s",str);
int len1=strlen(str);
Double(str,len1);
bool tag=1; //判断是否y n
if(len1!=tmpI)
{
tag=0;
}
else
{
memset(cntstr,0,sizeof(cntstr));
for(int i=0 ; i<len1 ; ++i)
++cntstr[str[i]-‘0‘];
for(int i=0 ; i<tmpI ; ++i)
--cntstr[tmp[i]];
for(int i=0 ; i<10 ; ++i)
if(cntstr[i]!=0)
{
tag=0;
break;
}
}
if(0==tag)
printf("No\n");
else
printf("Yes\n");
for(int i=tmpI-1 ; i>=0 ; --i) //逆序输出正常数
printf("%d",tmp[i]);
return 0;
}
PAT:1023. Have Fun with Numbers (20) AC
标签:
原文地址:http://www.cnblogs.com/Evence/p/4330235.html