1.因为ans 与rans相加 所以直接用ans继续循环 ,结果一样
2.有可能刚开始就是回文数 所以判断要放在循环开始处
3.若已经加了n次 还不是,则直接输出
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<set>
#include<map>
#include<sstream>
using namespace std;
typedef long long LL;
int main() {
int n;
string p;
cin >> p >> n;
string ans=p;
for(int i=0; i<=n; i++) {
string rans(ans.rbegin(), ans.rend());
if(ans == rans || i == n) {
cout << rans << endl;
cout << i << endl;
break;
}
p = ans;
ans = "";
int len = p.length();
int flag = 0;
for(int j=0; j<len; j++) {
int tmp = p[len-j-1]-'0';
int rtmp = p[j]-'0';
int sum = tmp+rtmp+flag;
if(sum > 9) {
sum -= 10;
flag = 1;
} else flag = 0;
ans += sum+'0';
}
if(flag) {
ans += '1';
}
}
return 0;
}