1136 A Delayed Palindrome (algorithm reverse(ans.begin,ans.end))

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string rev(string s)
{
reverse(s.begin(), s.end());
return s;
}
string add(string s1, string s2)
{
string s =s1;
int carry = 0;
for (int i = s1.size()-1; i >=0; i--) {
s[i] = (s1[i] - '0' + s2[i] - '0' + carry) % 10 + '0';
carry = (s1[i] - '0' + s2[i] - '0' + carry) / 10;
}
if (carry > 0)s = "1" + s;
return s;
}
int main()
{
string s,sum;
cin >> s;
if (s == rev(s)) {
cout<<s<< " is a palindromic number. ";
return 0;
}
int cnt = 10;
while(cnt--) {
sum = add(s, rev(s));
cout << s << " + " << rev(s) << " = " << sum << endl;
if (sum == rev(sum)) {
cout<<sum<< " is a palindromic number. ";
return 0;
}
s = sum;
}
cout << "Not found in 10 iterations." << endl;

return 0;
}

------------------

两数相加,可以通过字符直接相加,注意最高位的进位

原文地址:https://www.cnblogs.com/zxzmnh/p/11678534.html