Cod sursa(job #1401384)

Utilizator dumitrubogdanDumitru Bogdan Mihai dumitrubogdan Data 25 martie 2015 20:29:44
Problema Cifra Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


//returns last digit of pow(a,a)
int LD(long a){
    int uc_init = a%10;
    int rez=1;
    long i;
    for(i=1;i<=a;i++){
        rez=(rez*uc_init)%10;
    }
    return rez;
}

len[10]={1,1,4,4,2,1,1,4,4,2};
int v[10][5];
int sol[101];

void innit(){
    int i,k,p=1;
    for(i=0;i<=9;i++){
            p=1;
        for(k=0;k<=3;k++){
            p=(p*i)%10;
            v[i][k]=p;
        }
    }
//    for(i=0;i<=9;i++){
//        printf("%d : ",i);
//        for(k=0;k<len[i];k++){
//            printf("%d ",v[i][k]);
//        }
//        printf("\n");
//    }
}


int Uc(int n){
    return v[n%10][(n+3)%100%4];
}

void All_sol(){
    int i;
    for(i=0;i<=100;i++){
        sol[i]=Uc(i);
    }
}


int main()
{
    int T;
    int n;
    char nr[3];
    innit();
    All_sol();
    FILE *f=fopen("cifra.in","r");
    FILE *g=fopen("cifra.out","w");

    fscanf(f,"%d",&T);

        nr[2]=fgetc(f);
    while(T--){
        nr[0]='0';
        nr[1]='0';
        nr[2]=fgetc(f);
       // fscanf("%c",nr[2]);
        while(nr[2]!='\n'){
            nr[0]=nr[1];
            nr[1]=nr[2];

            nr[2]=fgetc(f);
        }
        nr[2]='\0';
        n=atoi(nr);
        fprintf(g,"%d\n", sol[n] );
       // printf("%s\n",nr );
        //T--;
    }

    return 0;
}