1024. Palindromic Number (25)

題目鏈接: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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章