• 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;
    }
    
  • 相关阅读:
    POJ2559/HDU1506 Largest Rectangle in a Histogram (cartesian tree)
    POJ2201 Cartesian Tree (cartesian tree)
    一本通1007
    一本通1006
    一本通1005
    一本通1004
    一本通1003
    一本通1002
    一本通1001
    一本通1000
  • 原文地址:https://www.cnblogs.com/tomori/p/13430076.html
Copyright © 2020-2023  润新知