# PAT-A 真题 – 1023 Have Fun with Numbers

Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers from 1 to 9, only in a different permutation. Check to see the result if we double it again!

Now you are suppose to check if there are more numbers with this property. That is, double a given number with  digits, you are to tell if the resulting number consists of only a permutation of the digits in the original number.

### Input Specification:

Each input contains one test case. Each case contains one positive integer with no more than 20 digits.

### Output Specification:

For each test case, first print in a line "Yes" if doubling the input number gives a number that consists of only a permutation of the digits in the original number, or "No" if not. Then in the next line, print the doubled number.

### Sample Input:

1234567899

### Sample Output:

Yes
2469135798

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

int main(){
//num存放读入的数字，ans存放*2后结果，tmp存放临时排序用的数组
char num[21], ans[21] = {0}, tmp[21];
cin >> num;
//jinwei存放进位，len存放长度
int jinwei= 0, len = strlen(num);
for(int i = len - 1; i >= 0; i--){
int n = num[i] - '0';
n = n * 2 + jinwei;
jinwei = n / 10;
ans[i] = n % 10 + '0';
}
//最后仍有进位，排列一定不一样
if(jinwei)
cout << "No" << endl << jinwei;
else{
//排序然后判断两个串是否一样
strcpy(tmp, ans);
sort(tmp, tmp + len);
sort(num, num + len);
if(!strcmp(tmp, num)) cout << "Yes" << endl;
else cout << "No" << endl;
}
cout << ans;
return 0;
}