#include <iostream>
#include <algorithm>
using namespace std;
void add(string &t){
string temp=t;
reverse(temp.begin(),temp.end());
int carry=0;
for(int i=t.length()-1;i>=0;i--){
t[i]=t[i]+temp[i]+carry-'0';
if(t[i]>'9'){
t[i]=t[i]-10;
carry=1;
}else carry=0; //相加后没有进位则重新置零给更高位相加
}
if(carry) t='1'+t; //最高位有进位
}
int main() {
int k;
string s,temp;
cin>>s>>k;
for(int i=0;i<=k;i++){
temp=s;
reverse(temp.begin(),temp.end());
if(temp==s||i==k) { //判断是否回文符或操作次数到达上限
cout<<s<<endl<<i;
break;
}
else add(s); //不是回文符则继续加
}
return 0;
}
PAT 1024 Palindromic Number (25 分) 大整数相加
于 2022-02-16 09:40:03 首次发布