Cod sursa(job #361439)

Utilizator JackRadu Tinel Jack Data 5 noiembrie 2009 00:16:45
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <cstdio>

int digit(int b, int e) {
    if(e)
    switch(b % 10) {
    case 0: return 0;
    case 1: return 1;
    case 2: switch(e % 4) { case 1: return 2; case 2: return 4; case 3: return 8; case 0: return 6; }
    case 3: switch(e % 4) { case 1: return 3; case 2: return 9; case 3: return 7; case 0: return 1; }
    case 4: switch(e % 2) { case 1: return 4; case 0: return 6; }
    case 5: return 5;
    case 6: return 6;
    case 7: switch(e % 4) { case 1: return 7; case 2: return 9; case 3: return 3; case 0: return 1; }
    case 8: switch(e % 4) { case 1: return 8; case 2: return 4; case 3: return 2; case 0: return 6; }
    case 9: switch(e % 2) { case 1: return 9; case 0: return 1; }
    }
    return 1;
}
int main() {
    int ntests, n, s, a, b, c;
    FILE *fin, *fout;

    fin  = fopen("cifra.in",  "r");
    fout = fopen("cifra.out", "w");

    fscanf(fin, "%d", &ntests);
    getc(fin); // get '\n'
    while(ntests-- > 0) {
        for(a = b = '0'; (c = getc(fin)) != EOF && c != '\n'; a = b, b = c)
            ;
        n = 10 * (a - '0') + (b - '0'); // consider only the last two digits

        for(s = 0; n > 0; n--)
            s += digit(n, n);

        fprintf(fout, "%d\n", s % 10);
    }

    return 0;
}