Cod sursa(job #2503015)

Utilizator nicu_ducalNicu Ducal nicu_ducal Data 2 decembrie 2019 09:31:16
Problema Cifra Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>
typedef unsigned int ui;
typedef long long ll;
using namespace std;

ll t, n;


ll expon(ll n, ll m)
{   //n > 1
    if (m == 1) return n % 10;
    else if (m % 2 == 0) return expon(((n % 10) * (n % 10)) % 10, m / 2) % 10;
    else if (m % 2 == 1) return (n % 10) * expon(((n % 10) * (n % 10)) % 10, (m - 1) / 2) % 10;
}

ll cifra(ll n)
{
    int pw;
    int mod = n % 10;
    int arr[4] = {0, 1, 5, 6};
    for (int i = 0; i < 4; i++) if (arr[i] == mod) return mod;
    if ((mod == 2) || (mod == 3) || (mod == 7) || (mod == 8))
    {
          pw = n % 4;
          if (pw == 0) return expon(mod, 4);
          return expon(mod, pw);
    }
    else if ((mod == 4) || (mod == 9))
    {
          pw = n % 2;
          if (pw == 0) return expon(mod, 2);
          return expon(mod, pw);
    }
}


int main(){
//ios_base::sync_with_stdio(0); cin.tie(); cout.tie();
ifstream cin("cifra.in");
ofstream cout("cifra.out");

cin >> t;
for (int h = 0; h < t; h++)
{
    cin >> n;
    int c = 1;
    for (ll i = 2; i <= n; i++)
    {
        c = (c + cifra(i)) % 10;
    }
    cout << c << "\n";
}

return 0;
}