Cod sursa(job #515662)

Utilizator padreatiAurelian Tutuianu padreati Data 21 decembrie 2010 23:25:49
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <string>

#include <math.h>

using namespace std;

short mod_pow(long long a, long long p) {
    if (p == 1) return a;
    if (p == 0) return 1;
    int r = (p & 1) ? a : 1;
    int v = mod_pow(a, p >> 1);
    return (r * v * v) % 10;
}

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

    int n;
    in >> n;
    int rest[100];
    long long t = 0;
    for (long long i = 1; i <= 100; i++) {
        t += mod_pow(i % 10, i);
        t %= 10;
        rest[i - 1] = t;
    }

    for (int i = 0; i < n; i++) {
        string s;
        in >> s;

        int r = atoi(s.substr(s.length() >= 2 ? s.length() - 2 : 0).c_str());
        if (r == 0) r = 100;
        cout << rest[r - 1] << endl;
        out << rest[r - 1] << endl;
    }

    return 0;
}