大数的相加
比较两个字符串中字符完全相同
Sample Input:
1234567899
Sample Output:
Yes 2469135798
#include <iostream> #include <string> #include <vector> #include <iomanip> #include <map> using namespace std; string doubleadd(string s) { int delta = 0; string result; int sum; for(int i = s.size()-1,j = s.size()-1; i>=0 || j>=0; i--,j--) { if(i < 0) { sum = s[j] - '0'; } else if(j < 0) { sum = s[i] - '0'; } else { sum = s[i] - '0' + s[j] - '0'; } sum += delta; result.insert(result.begin(), sum%10 + '0'); delta = sum/10; } if(delta) { result.insert(result.begin(), delta + '0'); } return result; } void compare(string str) { string strdouble = doubleadd(str); int a[10] = {0}; for (int i = 0; i < str.length(); i++) { a[str[i] - '0']++; } for (int i = 0; i < strdouble.length(); i++) { a[strdouble[i] - '0']--; } for (int i = 0; i < 10; i++) { if ( a[i] != 0 ) { cout<<"No"<<endl; cout<<strdouble<<endl; return; } } cout<<"Yes"<<endl; cout<<strdouble<<endl; } int main() { string in; cin>>in; compare(in); return 0; }