【題解】ZeroJudge a521: 12414 – Calculating Yuan Fen

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=a521

#include <iostream>
#include <algorithm>
using namespace std;
string s;

string num2str(int x){
    string ret = "";
    while (x){
        ret += '0' + (x % 10);
        x /= 10;
    }
    reverse(ret.begin(), ret.end());
    return ret;
}

int str2num(string t){
    int ret = 0;
    for (int i = 0; i < t.size(); i++){
        ret *= 10;
        ret += t[i] - '0';
    }
    return ret;
}

int check(int ST){
    string s1 = "";
    for (int i = 0; i < s.size(); i++){
        int x = ST + (s[i] - 'A');
        s1 += num2str(x);
    }
    string s2 = "";
    while (s1.size() >= 3){
        if (s1.size() == 3 && str2num(s1) == 100) break;
        s2 = "";
        for (int i = 0; i < s1.size()-1; i++){
            int x = (s1[i] - '0') + (s1[i+1] - '0');
            s2 += ('0' + (x % 10));
        }
        s1 = s2;
    }
    return str2num(s1);
}

int main() {
    while (cin >> s){
        int i;
        for (i = 1; i <= 10000; i++){
            if (check(i) == 100) {
                cout << i << "\n";
                break;
            }
        }
        if (i > 10000) cout << ":(\n";
    }
    return 0;
}

分享本文 Share with friends