Cod sursa(job #515688)

Utilizator padreatiAurelian Tutuianu padreati Data 22 decembrie 2010 09:41:02
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdlib>
#include <fstream>
#include <string>
#include <iostream>

using namespace std;

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

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

    int n;
    in >> n;

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

    char s[101];
    for (int i = 0; i < n; i++) {
        in.getline(s, 101);
//        cout << s;
        char a = '0', b = '0', ch = '0';
        for (int i = 0; i < 101; i++) {
            ch = s[i];
            if (ch < '0' || ch > '9') {
                break;
            }
            a = b;
            b = ch;
        }

        int r = (a - '0')*10 + b - '0';
        if (r == 0) r = 100;
        out << rest[r - 1] << "\n";
//        cout << rest[r - 1] << "\n";
    }
    out.flush();
    return 0;
}