1. 程式人生 > 實用技巧 >1024 Palindromic Number (25分)

1024 Palindromic Number (25分)

高精加

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

int check(vector<int> &a){
    int l = 0, r = a.size() - 1;
    while(l < r){
        if(a[l] != a[r]) return 0;
        ++l, -- r;
    }
    return 1;
}

void add(vector<int> &a, vector<int> &b){
    vector<int> res;
    int t = 0;
    for(int i = 0; i < a.size() || i < b.size(); i ++){
        if(i < a.size()) t += a[i];
        if(i < b.size()) t += b[i];
        res.push_back(t % 10);
        t /= 10;
    }
    if(t) res.push_back(1);
    a = res;
}

int main(){
    string s;
    int k;
    
    cin >> s >> k;
    vector<int> a;
    
    for(int i = s.size() - 1; i >= 0; i --) a.push_back(s[i] - '0');
    
    int cnt = 0;
    for(int i = 0; i < k && !check(a); i ++, cnt ++){
        auto b = a;
        reverse(b.begin(), b.end());
        
        add(a, b);
    }
    
    for(int i = a.size() - 1; i >= 0; i --) cout << a[i];
    puts("");
    cout << cnt << endl;
    return 0;
}