Cod sursa(job #2650229)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 17 septembrie 2020 19:35:56
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream f ( "cifra.in" );
ofstream g ( "cifra.out" );

const int N = 101;
char S[N];
int v[N], Uc[N];

int rest ( int a[], int x ){
    int i, nr = a[a[0]];
    for ( i = a[0] - 1; i >= 1; i-- ){
        nr = nr * 10 + a[i];
        if ( nr >= x )
            nr = nr % 20;
    }
    return nr;
}

int main()
{   int uc, n, i, T, test, j, c, r;
    f >> T;
    for ( i = 1; i <= 20; i++ ){
        uc = 1;
        int lim = i % 4;
        if ( lim == 0 )
            lim = 4;
        for ( j = 1; j <= lim; j++ )
            uc = uc * i;
        Uc[i] = ( Uc[i - 1] + uc ) % 10;
    }
    for ( test = 1; test <= T; test ++ ){
        f >> ( S + 1 );
        n = strlen ( S + 1 );
        c = 0;
        if ( n > 1 )
            c = ( S[n - 1] - '0' ) * 7;
        for ( i = 1; S[i] != 0 ; i++ )
            v[n - i + 1] = S[i] - '0';
        v[0] = n;
        r = rest ( v, 20 );
        g << ( c + Uc[r] - Uc[( r / 10 ) * 10] ) % 10 << '\n';
    }
    return 0;
}