Cod sursa(job #3360096)

Utilizator theodix_1Tiroiu Theodor Alexandru theodix_1 Data 8 iulie 2026 21:53:08
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("cifra.in");
ofstream fout("cifra.out");
int A[101];
void citire(int A[])
{
    char s[101];
    fin >> s;
    A[0] = strlen(s);
    for(int i = 1; i <= A[0]; i++)
        A[i] = s[A[0] - i] - '0';
}
int impartire(int A[], int B)
{
    int T = 0;
    for(int i = A[0]; i >= 1; i--)
    {
        T = T * 10 + A[i];
        A[i] = T / B;
        T %= B;
    }
    while(A[0] > 1 && A[A[0]] == 0)
        A[0]--;
    return T;
}

int ultimaCifraPutere(int x, int p)
{
    int rezultat = 1;
    x %= 10;
    for(int i = 1; i <= p; i++)
        rezultat = rezultat * x % 10;
    return rezultat;
}

int main()
{
    int t;
    fin >> t;
    while(t--)
    {
        citire(A);
        int rest = impartire(A, 20);
        if(rest == 0)
        {
            rest = 20;
            int i;
            for(i = 1; A[i] == 0; i++)
                A[i] = 9;
            A[i]--;
            while(A[0] > 1 && A[A[0]] == 0)
                A[0]--;
        }
        int su = 0;
        for(int i = 1; i <= rest; i++)
            su = (su + ultimaCifraPutere(i, i)) % 10;
        fout << (A[1] * 4 + su) % 10 << '\n'; /// 4 - ultima cifra a unei secventa de 20 1^1+2^2+...+20^20
    }
    return 0;
}