AcWing 1629. 延迟的回文数
原题链接
简单
作者:
xxxxuu
,
2021-05-29 21:44:03
,
所有人可见
,
阅读 424
#include <iostream>
#include <vector>
using namespace std;
bool check(vector<int>& a){
vector<int> b(a.rbegin(),a.rend());
if(b==a) return true;
return false;
}
vector<int> add(vector<int>& a,vector<int>& b){ //高精度加法
vector<int> c;
int temp=0,t=0; //t为进位
for(int i=0;i<a.size();i++){
temp=a[i]+b[i]+t;
c.push_back(temp%10);
t=temp/10;
}
if(t) c.push_back(t);
return c;
}
void output(vector<int>& a){ //输出当前数字
for(int i=a.size()-1;i>=0;i--) cout<<a[i];
}
int main(){
string num;
cin>>num;
vector<int> a;
for(int i=num.size()-1;i>=0;i--) a.push_back(num[i]-'0');
if(!check(a)){ //a为回文数直接输出
for(int i=0;i<10;i++){
output(a);
cout<<" + ";
vector<int> b(a.rbegin(),a.rend()); //原始数字的反转数字
output(b);
a=add(a,b);
cout<<" = ";
output(a);
cout<<endl;
if(check(a)) break; //若已经得到回文数直接跳出循环
}
}
if(check(a)){
output(a);
cout<<" is a palindromic number.";
}
else{
cout<<"Not found in 10 iterations.";
}
return 0;
}