判断一个数乘2后是否是原数的一个排列思路,未明白如何判断是否是原数的一个排列。还有2个点没过。
#include<stdio.h>
#include<string.h>
#define NUM 25
char source[NUM];
int dest[NUM];
int a[12];
int main()
{
int i,j,sLen,dLen,sum,flag,index;
scanf("%s",source);
sLen=strlen(source);
dLen=sLen;
for(i=0;i<sLen;i++)
a[source[i]-'0']++;
index=0;
for(i=sLen-1;i>=0;i--){
flag=0;
sum=(source[i]-'0')*2;
if(sum>=10){
flag=1;
sum-=10;
}
dest[index]+=sum;
dest[index+1]+=flag;
index++;
}
for(j=index-1;j>=0;j--){
if(a[dest[j]]==0){
flag=0;
break;
}
a[dest[j]]--;
}
for(i=0;i<10;i++)
if(a[i]!=0)
flag=0;
if(flag==0)
printf("Yes\n");
else printf("No\n");
for(j=index-1;j>=0;j--)
printf("%d",dest[j]);
printf("\n");
return 0;
}