题目:https://www.patest.cn/contests/pat-a-practise/1023
#include<cstring>
#include<cstdio>
using namespace std;
int a[10]={0};
char str1[25],str2[25];
void mulit2()
{
int len=0,carry=0,temp=0;
int len1=strlen(str1);
for(int i=len1-1; i>=0; i--)
{
temp = (str1[i] - '0')*2 + carry;
carry = temp/10;
temp = temp%10;
str2[len++] = temp+'0';
}
if(carry != 0)
str2[len++] = carry + '0';
str2[len] = '\0';
}
int main()
{
int flag = 0;
scanf("%s",str1);
int len = strlen(str1);
for(int i=0; i<len; i++)
a[str1[i]-'0']++;
mulit2();
if(strlen(str1) != strlen(str2))
{
printf("No\n");
}
else
{
len = strlen(str2);
for(int i=0; i<len; i++)
a[str2[i]-'0']--;
for(int i=0; i<10; i++)
{
if(a[i] != 0)
flag = 1;
}
if(flag == 1)
printf("No\n");
else
printf("Yes\n");
}
len = strlen(str2);
for(int i=len-1; i>=0; i--)
printf("%c",str2[i]);
return 0;
}