1023 Have Fun with Numbers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <bits/stdc++.h>
using namespace std;

int main() {
int book[10] = {0};
char s[50];
scanf("%s", s);
int flag1 = 0; // 是否进一位
int flag = 1; // 是否是原数字的重新排列
int len = strlen(s);
for (int i = len - 1; i >= 0; i--) {
int t = s[i] - '0';
book[t]++;
t = t * 2 + flag1;
flag1 = 0;
if (t >= 10) {
flag1 = 1;
t = t - 10;
}
s[i] = t + '0';
book[t]--;
}
for (int i = 0; i < 10; i++) {
if (book[i] != 0) {
flag = 0;
break;
}
}
printf("%s", (flag1 == 1 || flag == 0) ? "No\n" : "Yes\n");
if (flag1) printf("1");
printf("%s", s);

return 0;
}


123456789
Yes
246913578