题目链接
题目描述
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 k digits, you are to tell if the resulting number consists of only a permutation of the digits in the original number.
个人想法:
数组在定义的时候要放在外面,保证初始化为0。
代码:
#include<iostream>
using namespace std;
int mark[15];
int main()
{
string s;
cin >> s;
int flag = 0;
for(int i = s.length() - 1; i >= 0; i--) {
int t = s[i] - '0';
mark[t] ++;
t = 2 * t + flag;
flag = 0;
if(t >= 10) {
t -= 10;
flag = 1;
}
s[i] = t + '0';
mark[t] --;
}
int flag1 = 0;
for(int i = 0; i <= 9; i++)
if(mark[i] != 0) {
flag1 = 1;
}
if(flag || flag1)
cout << "No" << endl;
else cout << "Yes" << endl;
if(flag) cout << 1 << s;
else cout << s;
return 0;
}