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;
}