PAT_A1024
PAT甲级1024.
目录
A1024
题目
样例
样例1
输入:
67 3
输出:
484
2
样例2
输入:
69 3
输出:
1353
3
思路和坑点
大数相加,直接使用模板进行相加,然后判定是不是回文数,如果是提前结束,否则直到最后规定的步数。
AC代码
#include<bits/stdc++.h>
using namespace std;
bool isp(string str){
int i=0,j=str.size()-1;
while(i<j){
if(str[i]!=str[j])
return false;
i++;j--;
}
return true;
}
void doadd(string &str){ //大数相加,使用传引用直接修改
string temp;
int flag=0;
for(int i=0,j=str.size()-1;j>=0;i++,j--){
int tag=str[i]-'0'+str[j]-'0'+flag;
temp.push_back(tag%10+'0');
flag=tag/10;
}
if(flag>0) temp.push_back(flag+'0');
reverse(temp.begin(),temp.end());
str=temp; //重新赋值
}
int main(void){
#ifdef ONLINE_JUDGE
#else
freopen("1.txt","r",stdin);
#endif
string a;
int k,i=0;
cin>>a>>k;
for(i=0;i<k;i++){
if(isp(a)) break;
doadd(a);
}
cout<<a<<'\n'<<i;
return 0;
}