Cod sursa(job #3224719)

Utilizator bogdan1479Luca Bogdan Alexandru bogdan1479 Data 15 aprilie 2024 21:50:22
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>
#define QED fin.close(); fout.close(); return 0;
using namespace std;
ifstream fin("cifra.in");
ofstream fout("cifra.out");
#define cin fin
#define cout fout
const int XMAX = 102;

int restlaputere(int a, int p, int MOD)
{
    if(a == 0)
        return 0;
    int val = 1, x = a % MOD;
    while(p > 0)
    {
        if(p % 2 != 0)
            val = val * x % MOD;
        x = x * x % MOD;
        p /= 2;
    }
    return val;
}

int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        int lung, uc2, s = 0, s1;
        s1 = 7; /// u.c. a 1^1+2^2+3^3+...+10^10 = 7, iar 11^11+12^12+13^13+...+20^20 = 7
        char x[XMAX];
        cin >> x;
        lung = strlen(x);
        if(lung == 1)
            uc2 = x[0] - '0';
        else
            uc2 = (x[lung - 2] - '0') * 10 + (x[lung - 1] - '0');
        if(uc2 != 0)
            s = uc2 / 20 * (2 * s1) % 10;
        else
            s = 5 * (2 * s1) % 10;
        uc2 %= 20;
        for(int i = 1; i <= uc2; i++)
            s = (s + restlaputere(i, i, 10)) % 10;
        cout << s << '\n';
    }
    QED
}