分析:
将一个字符串倒置后与原字符串相比较,可以知道是否为回文,使用reverse()函数可以实现;
再设置一个add()函数,实现两个字符串相加,但是要注意要用一个k值来标记一下是否需要进位;
#include<bits/stdc++.h>
using namespace std;
string rev(string s){//字符串倒转函数
reverse(s.begin(),s.end());
return s;
}
string add(string s1,string s2){//相加函数
string s=s1;
int k=0;//判断是否需要进位
for(int i=s1.size()-1;i>=0;i--){
s[i]=(s1[i]-'0'+s2[i]-'0'+k)%10+'0';//实现相加,并且注意最后转为字符
k=(s1[i]-'0'+s2[i]-'0'+k)/10;//下一步相加时的进位数
}
if(k>0)
s="1"+s;//最高位的计算
return s;
}
int main(){
string s,sum;
int n=10;
cin>>s;
if(s==rev(s)){
cout<<s<<" is a palindromic number.\n";
return 0;
}
while(n--){
sum=add(s,rev(s));
cout<<s<<" + "<<rev(s)<<" = "<<sum<<endl;
if(sum==rev(sum)){
cout<<sum<<" is a palindromic number.\n";
return 0;
}
s=sum;
}
cout<<"Not found in 10 iterations.\n";
return 0;
}