- string加法操作符重载
string& assign (InputIterator first, InputIterator last);string& assign (const string& str, size_t subpos, size_t sublen = npos);void reverse (BidirectionalIterator first, BidirectionalIterator last);
#include<bits/stdc++.h>
using namespace std;
string operator+(const string& str1,const string& str2){
int carry=0;
string ret;
for(int i=0;i<str1.size();++i){
ret.push_back(((str1[i]-'0'+str2[i]-'0'+carry)%10)+'0');
carry=(str1[i]-'0'+str2[i]-'0'+carry)/10;
}
if(carry!=0){
ret.push_back(carry+'0');
}
reverse(ret.begin(),ret.end());
return ret;
}
bool isPalindrome(string str){
int s=0,e=str.size()-1;
for(;s<e;++s,--e){
if(str[s]!=str[e])return false;
}
return true;
}
int main(){
string str1,str2;
cin>>str1;
int times=10;
bool flag=false;
while(times--){
if(isPalindrome(str1)){
flag=true;
cout<<str1<<" is a palindromic number."<<endl;
break;
}
str2.assign(str1.begin(),str1.end());
reverse(str2.begin(),str2.end());
cout<<str1<<" + "<<str2<<" = ";
str1=str1+str2;
cout<<str1<<endl;
}
if(!flag)cout<<"Not found in 10 iterations."<<endl;
return 0;
}