错误点:
1.长度会超过long long,需要大整数相加;
2.输入的s也要判断是否是回文串,若是直接输出结果,结束。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool check(string& s){
int r=s.size()-1,l=0;
while(l<r){
if(s[r]==s[l]){
l++,r--;
}
else return false;
}
return true;
}
string add(string a,string b){
string sum;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int a_size=a.size(),b_size=b.size();
int pre=0,cur=0,i=0;
while(i<a_size&&i<b_size){
cur = a[i]-'0'+b[i]-'0'+pre;
pre=cur/10;
cur=cur%10;
i++;
sum=to_string(cur)+sum;
}
while(i<a_size){
cur=a[i]-'0'+pre;
pre=cur/10;
cur=cur%10;
i++;
sum=to_string(cur)+sum;
}
while(i<b_size){
cur=b[i]-'0'+pre;
pre=cur/10;
cur=cur%10;
i++;
sum=to_string(cur)+sum;
}
if(pre!=0){
sum=to_string(pre)+sum;
}
return sum;
}
int main(){
string s;
int i=0;
cin>>s;
if(check(s)){
cout<<s<<" is a palindromic number."<<endl;
return 0;
}
while(i<10){
string st=s;
reverse(st.begin(),st.end());
string sum=add(s,st);
// cout<<"sum:"<<sum<<endl;
cout<<s<<" + "<<st<<" = "<<sum<<endl;
if(check(sum)){
cout<<sum<<" is a palindromic number."<<endl;
return 0;
}
i++;
s=sum;
}
cout<<"Not found in 10 iterations.";
return 0;
}