1024. Palindromic Number (25)

来源:互联网 发布:c语言手册 chm 编辑:程序博客网 时间:2024/06/10 21:48

题目链接:https://www.patest.cn/contests/pat-a-practise/1024


题目大意:判断a是否是回文数,若不是则计算a+(a的逆置)是否是回文数,如此迭代。若迭代k轮之后仍不是回文数,输出第k轮的a+(a的逆置)


解题思路:

  • 注意溢出的问题,long long也是会溢出的,会有两个测试点不通过,所以要用字符串存储数字
  • 字符串可以使用函数reverse()来进行逆置

代码如下:

#include <iostream>#include <string>#include <algorithm>using namespace std;string add(string a,string b){    int tmp=0;    string c=a;    for(int i=b.length()-1;i>=0;i--){        c[i]=(a[i]+b[i]-'0'-'0'+tmp)%10+'0';        if((a[i]+b[i]-'0'-'0'+tmp)<10)            tmp=0;        else             tmp=1;    }    if(tmp==1)        c='1'+c;    return c;}int main(int argc, char const *argv[]){    string a;    int k;    cin>>a>>k;    int c;//c保存迭代的次数    for(c=0;c<k;c++){        string s=a;        reverse(s.begin(),s.end());        if(a==s)//判断是否是回文数            break;        a=add(a,s);    }    cout<<a<<endl<<c<<endl;    return 0;}
原创粉丝点击