PTA(Advanced Level) 1023:Have Fun with Numbers(C语言实现)
#include <stdio.h>
#include <string.h>
void Double(char s[])
{
int i,c=0,k=strlen(s);
for(i=k-1; i>=0; i--,k--)
{
s[k]=((s[i]-'0')*2+c)%10+'0';//还是以s保存
c=((s[i]-'0')*2+c)/10;
}
if(c>0)//最后有进位,放在第一位
s[k]=c+'0';
else//没有进位,后面的数往前挪
strcpy(s,s+1);
}
int main()
{
char num[22]="";
int i,a[10]={ 0};
gets(num);
for(i=0; num[i]; i++)
a[num[i]-'0']++;//记录每一个数出现的次数
Double(num);//乘以2
for(i=0; num[i]; i++)
{
a[num[i]-'0']--;
if(a[num[i]-'0'] < 0)//出现的次数不相等
break;
}
if(num[i])
printf("No\n");
else
printf("Yes\n");
printf("%s",num);
return 0;
}
还没有评论,来说两句吧...