Cod sursa(job #515670)

Utilizator padreatiAurelian Tutuianu padreati Data 22 decembrie 2010 00:27:03
Problema Cifra Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdlib>
#include <fstream>
#include <string>
#include <iostream>

using namespace std;

short mod_pow(short a, long long p) {
    if (p == 1) return a;
    if (p == 0) return 1;
    short r = (p & 1) ? a : 1;
    short 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;
    }

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

        it = s.end() - 1;
        int r = (*it) - '0';
        if (it != s.begin())
            r += (*(s.end() - 2)-'0')*10;

        if (r == 0) r = 100;
        out << rest[r - 1] << endl;
        cout << rest[r - 1] << endl;
    }

    return 0;
}