题目描述

分析:把一个整数和他的翻转数加起来,判断是否是回文数,大整数加法
#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);
}