题目描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210310143443626.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FhcWFxYTY2Ng==,size_16,color_FFFFFF,t_70)
分析:把一个整数和他的翻转数加起来,判断是否是回文数,大整数加法
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
string s1,s2;
void add(){
int carry=0;
for(int i=0;i<s1.size();i++){
int k=s1[i]-'0'+s2[i]-'0'+carry;
s1[i]=k%10+'0';
carry=k/10;
}
if(carry!=0){
s1+=carry+'0';
}
}
bool judge(string& s){
for(int i=0,j=s.size()-1;i<j;i++,j--){
if(s[i]!=s[j]){
return false;
}
}
return true;
}
int main(){
int k,step=0;
cin>>s1>>k;
for(;!judge(s1)&&step<k;step++){
s2=s1;
reverse(s1.begin(),s1.end());
add();
}
reverse(s1.begin(),s1.end());
printf("%s\n%d",s1.c_str(),step);
}