https://www.patest.cn/contests/pat-a-practise/1023
#include <cstdio>
#include <cstring>
#define rep(i,j,k) for(int i=j;i<=k;i++)
const int maxn = 100;
char s[maxn];
int b[maxn], c[maxn], len, x;
bool flag;
int main()
{
scanf("%s", s);
for (int i = strlen(s) - 1; i >= 0; i--,len++) {
b[len] = s[i] - '0';
c[b[len]]++;
}
rep(i, 0, len - 1) {
int t = b[i] * 2 + x;
b[i] = t%10;
if (--c[b[i]] < 0) flag = 1;
x = t / 10;
}
while (x) { b[len++] = x % 10; x /= 10; flag = 1; }
printf("%s\n", flag ? "No" : "Yes");
for (int i = len - 1; i >= 0; i--) printf("%d",b[i]);
printf("\n");
return 0;
}