Cod sursa(job #1428880)

Utilizator GeiGeiGeorge Cioroiu GeiGei Data 5 mai 2015 11:21:47
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <string>

using namespace std;

int modexp(int b, int e, int m) {
    int ans = 1;
    while (e > 0) {
        if (e % 2 == 1)
            ans = (ans * b) % m;
        b = (b * b) % m;
        e /= 2;
    }
    return ans;
}

int main() {
    ifstream fi("cifra.in");
    ofstream fo("cifra.out");

    int v[100];
    v[0] = 0;
    for (int i = 1; i <= 99; i++)
        v[i] = (v[i - 1] + modexp(i, i, 10)) % 10;

    int totaltest;
    fi >> totaltest;
    string s;
    getline(fi, s);
    for (int test = 1; test <= totaltest; test++) {
        getline(fi, s);
        int nr = 0;
        int l = s.size();
        for (int i = l - 1; i >= 0 && i >= l - 2; i--) {
            nr += (s[i] - '0') * ((i == l - 1) ? 1 : 10);
        }
        fo << v[nr] << endl;
    }

    return 0;
}