题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805261754023936
也是一遍过,不过这题有几个注意点
判断回文数点方法,直接用reverse转换后双等号就行了
代码
#include<algorithm>#include<string>#include<cstdio>#include<iostream>using namespace std;string add(string a){string b = a, res = "";reverse(b.begin(), b.end());int carry = 0;for(int i = a.size() - 1; i >= 0; i--){int temp = (a[i] - '0' + b[i] - '0' + carry) % 10;carry = (a[i] - '0' + b[i] - '0' + carry) / 10;res += '0' + temp;}if(carry != 0) res += '0' + carry;reverse(res.begin(), res.end());return res;}bool judge(string a){string b = a;reverse(b.begin(), b.end());if(b == a) return true;else return false;}int main(){string a;cin>>a;int count = 0;if(judge(a)) cout<< a + " is a palindromic number.";else {while(!judge(a)){if(count == 10) {cout<<"Not found in 10 iterations.";break;}string rev_a, add_a;rev_a = a;reverse(rev_a.begin(), rev_a.end());add_a = add(a);cout<<a + " + " + rev_a + " = " + add_a<<endl;if(judge(add_a)){cout<< add_a + " is a palindromic number.";break;}a = add_a;count++;}}return 0;}
