Cod sursa(job #3294335)

Utilizator Costy2345Costi Dimian Costy2345 Data 21 aprilie 2025 17:09:09
Problema Cifra Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("cifra.in");
ofstream fout("cifra.out");
const int MOD = 10;
int lgput(int n, int a)
{
    if(a == 0)
    {
        return 1;
    }
    else{
        if(a % 2 == 0)
        {
            int val = lgput(n, a / 2);
            return (val * val) % MOD;
        }
        return (lgput(n, a - 1) * n) % 10;
    }
}
int ultima_cifra(int n, int a)
{
    n = n % 10;
    if(n == 1)
    {
        return 1;
    }
    else if(n == 2)
    {
        a = a % 4;
        if(a == 0)a = 4;
        return lgput(2, a);
    }
    else if(n == 3)
    {
        a = a % 4;
        if(a == 0)a = 4;
        return lgput(3, a);
    }
    else if(n == 4)
    {
        a = a % 2;
        if(a == 0)a = 2;
        return lgput(4, a);
    }
    else if(n == 5)
    {
        return 5;
    }
    else if(n == 6)
    {
        return 6;
    }
    else if(n == 7)
    {
        a = a % 4;
        if(a == 0)a = 4;
        return lgput(7, a);
    }
    else if(n == 8)
    {
        a = a % 4;
        if(a == 0)a = 4;
        return lgput(8, a);
    }
    else if(n == 9)
    {
        a = a % 2;
        if(a == 0)a = 2;
        return lgput(9, a);
    }
    else if(n == 0)
    {
        return 0;
    }
}
signed main()
{
    int t;
    fin >> t;
    for(int i = 1; i <= t; i++)
    {
        int n;
        int suma = 0;
        fin >> n;
        for(int j = 1; j <= n; j++)
        {
            suma = (suma + ultima_cifra(j, j)) % 10;
        }
        fout << suma << "\n";
    }
    return 0;
}