Cod sursa(job #503909)

Utilizator mraresMardare Rares mrares Data 25 noiembrie 2010 17:33:36
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.93 kb
#include <cstdio>
#define nmax 15
using namespace std;

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

int suma, n, x, i, sol[nmax];
int v1[]={1};
int v2[]={2,4,6,8};
int v3[]={3,9,7,1};
int v4[]={4,6};
int v5[]={5};
int v6[]={6};
int v7[]={7,9,3,1};
int v8[]={8,4,2,6};
int v9[]={9, 1};
int v10[]={0};

void init()
{
    sol[1]=1;
    sol[2]=4;
    sol[3]=4;
    sol[4]=2;
    sol[5]=1;
    sol[6]=1;
    sol[7]=4;
    sol[8]=4;
    sol[9]=2;
    sol[10]=1;
}

int main()
{
    init();
    fscanf(fin, "%d%d", &n, &x);
    suma=x%10;
    fprintf(fout, "%d\n", suma);
    for(i=2;i<=n;++i)
    {
        fscanf(fin, "%d", &x);
        switch(x%10)
        {
            case 1: suma=(suma+1)%10; break;
            case 2: if(i<sol[x%10]) suma=(suma+v2[i%sol[2]-1])%10; else suma=(suma+v2[sol[2]%i-1])%10;  break;
            case 3: if(i<sol[x%10]) suma=(suma+v3[i%sol[3]-1])%10; else suma=(suma+v3[sol[3]%i-1])%10;  break;
            case 4: if(i<sol[x%10]) suma=(suma+v4[i%sol[4]-1])%10; else suma=(suma+v4[sol[4]%i-1])%10;  break;
            case 5: if(i<sol[x%10]) suma=(suma+v5[i%sol[5]-1])%10; else suma=(suma+v5[sol[5]%i-1])%10;  break;
            case 6: if(i<sol[x%10]) suma=(suma+v6[i%sol[6]-1])%10; else suma=(suma+v6[sol[6]%i-1])%10;  break;
            case 7: if(i<sol[x%10]) suma=(suma+v7[i%sol[7]-1])%10; else suma=(suma+v7[sol[7]%i-1])%10;  break;
            case 8: if(i<sol[x%10]) suma=(suma+v8[i%sol[8]-1])%10; else suma=(suma+v8[sol[8]%i-1])%10;  break;
            case 9: if(i<sol[x%10]) suma=(suma+v9[i%sol[9]-1])%10; else suma=(suma+v9[sol[9]%i-1])%10;  break;
            case 10: if(i<sol[x%10]) suma=(suma+v10[i%sol[10]-1])%10; else suma=(suma+v10[sol[10]%i-1])%10;  break;
        }
        fprintf(fout, "%d\n", suma);
    }
    //fprintf(fout, "%d\n", v4[4%sol[4]-1]);
    //fprintf(fout, "%d", v4[2%4-1]);
    //fprintf(fout, "%d", suma);
    return 0;
}