PATJ1023

这道题挺简单的,不过也挺好玩的直接上代码吧,留念一下,给以后留个笑点。
空出第一位留给进位。。。还有如果有进位是原来的数先乘以兔再加一。。一开始我的神操作笑死我自己了。
#include
#include<stdio.h>
#include
using namespace std;
int main() {
int i = 0;
int a[21] = {0};
int b[11] = {0};
char ch = ‘0’;
while(ch != ‘\n’) {
a[i++] = ch - ‘0’;
b[ch - ‘0’]++;
scanf("%c",&ch);
}
b[0]–;
int flag = i;
int plus = 0;
for (i = flag - 1;i > -1;i–) {
a[i] = a[i]*2 + plus;
if (a[i] >= 10) {
a[i] %= 10;
plus = 1;
}
else {
plus = 0;
}
}
for (i = 1;i < flag;i++) {
b[a[i]]–;
}
if (a[0] != 0) {
b[a[0]]–;
}
int count = 0;
for (i = 0;i < 10;i++) {
if (b[i] != 0) {
count = 1;
break;
}
}
if (count == 0) {
printf(“Yes\n”);
}
else {
printf(“No\n”);
}
if (a[0] != 0) {
cout<<a[0];
}
for (i = 1;i < flag;i++) {
cout<<a[i];
}
return 0;
}
PATJ1023