Cod sursa(job #3338305)

Utilizator iondodon1998Dodon Ion iondodon1998 Data 2 februarie 2026 16:59:25
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;

static int mod_str(const string &s, int mod) {
    int r = 0;
    for (char ch : s) {
        r = (r * 10 + (ch - '0')) % mod;
    }
    return r;
}

static int powmod(int a, int e, int mod) {
    int r = 1 % mod;
    a %= mod;
    while (e > 0) {
        if (e & 1) r = (r * a) % mod;
        a = (a * a) % mod;
        e >>= 1;
    }
    return r;
}

int main() {
    ifstream fin("cifra.in");
    ofstream fout("cifra.out");

    int T;
    if (!(fin >> T)) return 0;

    vector<int> pref(21, 0);
    for (int k = 1; k <= 20; ++k) {
        int last = powmod(k % 10, k, 10);
        pref[k] = (pref[k - 1] + last) % 10;
    }
    int sum20 = pref[20];

    while (T--) {
        string N;
        fin >> N;
        int r = mod_str(N, 20);
        int s = mod_str(N, 200);
        int qmod10 = s / 20; // since s in [0,199]
        int ans = (sum20 * qmod10 + pref[r]) % 10;
        fout << ans << '\n';
    }

    return 0;
}