#include<iostream> #include<string> #include<cstring> #include<vector> using namespace std; int main() { int a[10] = {0}, b[10] = { 0 }; string str; vector<int>doublenum;//记录翻倍后的数值 cin >> str; int length = str.length(); int j = 0; for (int i = 0; i < length; i++) { int num; num = str[i] - '0'; a[num]++; } int carry = 0; for (int i = length-1; i>=0; i--) { int num = (str[i] - '0') * 2 + carry; if (num >=10) carry = 1; else carry = 0; int remainder = num % 10; b[remainder]++; doublenum.push_back(remainder); } if (carry == 1) doublenum.push_back(1); bool judge = true; for (int i = 0; i < 10; i++) { if (a[i] != b[i]) { judge = false; break; } } if (judge) { cout << "Yes" << endl; } else { cout << "No" << endl; } for (int i = doublenum.size()-1; i>=0; i--) { cout << doublenum[i]; } return 0; }
1、用字符串记录数字
2、vector