Cod sursa(job #2640736)

Utilizator andrei42Oandrei42O andrei42O Data 7 august 2020 20:07:08
Problema Cifra Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
int T, p[10], period, solve();
string s;
void precalculate_periods();
int main()
{
    f >> T;
    f.get();
    precalculate_periods();
    for(; T; T--)
    {
        getline(f, s);
        g << solve() << '\n';
        s.clear();
    }
    return 0;
}
int power(int i, int e)
{
    if(e == 0)
        return 1;
    int ret = power(i, e / 2);
    ret = (ret * ret) % 10;
    if(e % 2)
        ret = (ret * i) % 10;
    return ret % 10;
}
void precalculate_periods()
{
    for(int i = 1; i <= 9; i++)
        p[i] = p[i - 1] + power(i, i);
}
int solve()
{
    int ans = p[9], k = s.size();
    if(k < 2)
        return p[s[k - 1] - '0'] % 10;
    for(int i = k - 2; i >= 0 && s[i]; i--)
        ans = (ans * (s[i] - '0')) % 10;
    return (ans + p[s[k - 1] - '0']) % 10;
}