Cod sursa(job #1457924)

Utilizator perjulucianPerju Lucian Ionut perjulucian Data 4 iulie 2015 22:12:02
Problema Cifra Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int last_digit[10][4]={
                        {0, 0, 0, 0},
                        {1, 1, 1, 1},
                        {6, 2, 4, 8},
                        {1, 3, 9, 7},
                        {6, 4, 6, 4}, 
                        {5, 5, 5, 5},
                        {6, 6, 6, 6},
                        {1, 7, 9, 3},
                        {6, 8, 4, 2},
                        {1, 9, 1, 9}
                    };
int pow_last_digit(int numar){
    int cifra = numar % 10; //

    int lungime ;
    if (numar < 10 )
        lungime = 1 ;
    else
        lungime = 2 ;
    if ( lungime == 1)
        return last_digit[cifra][cifra%4];

    return last_digit [cifra][numar % 4];

}                    
int main(){
    FILE * in = fopen("cifra.in","r");
    FILE * out = fopen("cifra.out","w");
    int T ;
    fscanf(in,"%d\n",&T);
    // printf("%d\n",T );
    int i , s_crt = 0 ; 
    int * recurenta = (int*)malloc(100 * sizeof(int));
    for (i = 0 ; i < 100 ; i++){
        s_crt += pow_last_digit(i) ;
        s_crt = s_crt % 10 ;
        recurenta[i] = s_crt ;
        
    }
    char numar[101];
    for (i = 0 ;i<T; i++ ){
        fscanf(in,"%s\n",numar);
        int len = strlen(numar) ;
        if(len == 1)
            fprintf(out, "%d\n", recurenta[numar[len-1] - 48]);
        else
            fprintf(out, "%d\n", recurenta[(numar[len-2]-48)*10 + numar[len-1]-48]);

    }


    fclose(in);
    fclose(out);
    return 0 ; 
}