转自柳诺,注意在add函数中最后要判断carry是否为1,并且要逆转
#include<bits/stdc++.h>
using namespace std;
string add(string s,string res)
{
string ans="";int carry=0,num;
for(int i=0;i<s.length();i++)
{
num=s[i]-'0'+res[i]-'0'+carry;carry=0;
if(num>=10)
{
num-=10;carry=1;
}
ans+=char(num+'0');
}
if(carry==1) ans+='1';
reverse(ans.begin(),ans.end());
return ans;
}
int main()
{
string s;
//freopen("1079.txt","r",stdin);
cin>>s;
int cnt=0;
while(cnt<10)
{
string res=s;reverse(res.begin(),res.end());
if(res==s)
{
cout<<s<<" is a palindromic number."<<endl;
break;
}
else{
string st=add(s,res);
cout<<s<<" + "<<res<<" = "<<st<<endl;cnt++;
s=st;
}
}
if(cnt==10) cout<<"Not found in 10 iterations."<<endl;
return 0;
}