题目链接:1079 延迟的回文数
#include <iostream>
#include <algorithm>
using namespace std;
//用于判定回文数
int isHW(string s){
for(int i=0;i<s.length()/2;i++){
if(s[i]!=s[s.length()-1-i]){
return 0;
}
}
return 1;
}
int main(){
string s1, s2, s3;//输出格式为"s1 + s2 = s3"
int a, b, c, i = 0, j;
char d;
cin >> s1;
while(!isHW(s1) && i < 10){//退出条件,找到回文数或大于10
s3.clear();
s2 = s1;
reverse(s2.begin(),s2.end());//翻转s2
c = 0;
j = (int)s1.length()-1;
//每轮取出一位a,b,与进位c一同计算本位与进位
while(j>=0 || c){
a = j < 0 ? 0 : s1[j] - '0';
b = j < 0 ? 0 : s2[j] - '0';
d = (a + b + c) % 10 + '0';
c = (a + b + c) / 10;
s3.insert(0,1,d);
j--;
}
cout << s1 << " + " << s2 << " = " << s3 << endl;
s1 = s3;
i++;
}
if(i<10 || isHW(s1)) cout << s1 << " is a palindromic number." << endl;
else cout << "Not found in 10 iterations." << endl;
return 0;
}