Cod sursa(job #905124)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 5 martie 2013 16:35:27
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <cstring>

using namespace std;

const int MAX_L = 120;

int N, T, P;
int v[250];
char S[ MAX_L ];

int main()
{
    FILE *f, *g;

    f = fopen("cifra.in", "r");
    g = fopen("cifra.out", "w");

    for(int i = 1; i <= 240; ++i)
    {
        v[i] = 1;
        for(int j = 1; j <= i; ++j)
            v[i] *= i, v[i] %= 10;
        v[i] += v[i-1], v[i] %= 10;

        if(i % 2 == 0)
        {
            int ok = 1;

            for(int j = 1, k = i / 2 + 1; k <= i; ++j, ++k)
                if(v[k] != v[j])
                    ok = 0, k = i;

            if(ok)
            {
                P = i / 2;
                break;
            }
        }
    }

    fscanf(f, "%d", &T);
    fgets(S, 3, f);
    for( ; T; --T)
    {
        fgets(S, 105, f);

        int len = strlen(S) - 1;

        if(S[len] == '\n')
            --len;

        if(len > 0)
            N = (S[len-1] - '0') * 10 + S[len] - '0';
        else N = S[len] - '0';

        fprintf(g, "%d\n", v[N%P]);
    }

    fclose(f);
    fclose(g);

    return 0;
}