版权声明:// Copyright © 2018年 Coding18. All rights reserved. https://blog.csdn.net/Coding18/article/details/86171160
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int k[10] = {0};
struct bign{
int len;
int d[1000];
bign()
{
len = 0;
memset(d,0,sizeof(d));
}
};
bign change(char s[])
{
bign c;
int len = strlen(s);
for(int i = 0; i < len; i++)
{
c.d[c.len++] = s[len-1-i] - '0';
k[s[i] - '0']++;
}
return c;
}
bign dou(bign a)
{
bign c;
int carry = 0;
for(int i = 0; i < a.len; i++)
{
c.d[c.len++] = (a.d[i] * 2 + carry) % 10 ;
carry = (a.d[i] * 2 + carry) / 10 ;;
}
while(carry)
{
c.d[c.len++] = carry %10;
carry /= 10;
}
return c;
}
void print(bign a)
{
for(int i = a.len-1; i >= 0; i--)
printf("%d",a.d[i]);
}
int main()
{
char s[1000];
scanf("%s",s);
bign a = change(s);
a = dou(a);
int i;
for(i = 0; i < a.len; i++)
{
k[a.d[i]] --;
}
for(i = 0; i < 10; i++)
{
if(k[i] != 0)
{
printf("No\n");
break;
}
}
if(i == 10) printf("Yes\n");
print(a);
return 0;
}