说明:
1、测试数据稍弱;如果输入10000,应该输出10000 + 1 = 10001,而不是+ 00001,但本测试用例无此情况,故可以略去
2、实际考察大数相加
注意:
1、如果输入A本身是回文数,则不进行迭代求和,应该直接输出结果
#include <bits/stdc++.h>
using namespace std;
string add(const string &A,const string &B)
{
int i=A.size()-1,sur=0;
string C;
while(i>=0)
{
int sum=A[i]-'0'+B[i]-'0';
C+=(sur+sum)%10+'0';
sur=(sur+sum)/10;
--i;
}
if(sur>0)C+='0'+sur;
reverse(C.begin(),C.end());
return C;
}
bool ispalindromic(const string &C)
{
int len=C.size(),i;
for(i=0;i<len/2;++i)
if(C[i]!=C[len-1-i]) return false;
return true;
}
int main()
{
string A,B,C;
int cnt=10;
cin>>A;
if(ispalindromic(A))
{
cout<<A<<" is a palindromic number."<<endl;
return 0;
}
while(cnt--)
{
B=A;
reverse(B.begin(),B.end());
C=add(A,B);
cout<<A<<" + "<<B<<" = "<<C<<endl;
if(ispalindromic(C))
{
cout<<C<<" is a palindromic number."<<endl;
return 0;
}
A=C;
}
cout<<"Not found in 10 iterations."<<endl;
return 0;
}
大数回文迭代求和

本文介绍了一个通过不断将一个数与其反转数相加来寻找回文数的方法,并提供了完整的C++实现代码。该算法适用于大数运算,能够处理长度较长的数字字符串。
1500

被折叠的 条评论
为什么被折叠?



