#include<iostream>
#include<algorithm> //reverse()
using namespace std;
string rev(string s){
reverse(s.begin(),s.end());
return s;
}
//用字符串模拟整数相加
string add(string s1,string s2){
string s=s1;
int carry=0;
for(int i=s1.length()-1;i>=0;i--){
s[i]=(s1[i]-'0'+s2[i]-'0'+carry)%10+'0'; //注意+'0'
carry=(s1[i]-'0'+s2[i]-'0'+carry)/10;
}
if(carry>0) s='1'+s;
return s;
}
int main(){
string s;
cin>>s;
if(s==rev(s)) printf("%s is a palindromic number.\n",s.c_str());
else{
int step=10;
while(step>0){
//string sum=to_string(stoi(s)+stoi(rev(s))); //1000位的正整数,故这样写不行
string sum=add(s,rev(s));
printf("%s + %s = %s\n",s.c_str(),rev(s).c_str(),sum.c_str());
if(sum==rev(sum)){
printf("%s is a palindromic number.\n",sum.c_str());
break;
}
s=sum;
step--;
}
if(step==0) printf("Not found in 10 iterations.\n");
}
return 0;
}
PAT乙级-1079 延迟的回文数 (20 分)
最新推荐文章于 2024-07-21 13:38:21 发布