Cod sursa(job #2223164)

Utilizator arvlgeArdeleanu Vlad George arvlge Data 19 iulie 2018 11:39:30
Problema Cifra Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define RET(c,r)\
    case c:\
        return r

//ASTA SIGUR SE POATE FACE CU O FORMULA\
AFLA CARE-I
int lastDigitPow(int d,int p){
    switch(d){
        RET(0,0);
        RET(1,1);
        case 2:
            switch(p%4){
                RET(0,6);RET(1,2);
                RET(2,4);RET(3,8);
            }
        case 3:
            switch(p%4){
                RET(0,1);RET(1,3);
                RET(2,9);RET(3,7);
            }
        case 4:
            switch(p%2){
                RET(0,6);RET(1,4);
            }
        RET(5,5);
        RET(6,6);
        case 7:
            switch(p%4){
                RET(0,1);RET(1,7);
                RET(2,9);RET(3,3);
            }
        case 8:
            switch(p%4){
                RET(0,6);RET(1,8);
                RET(2,4);RET(3,2);
            }
        case 9:
            switch(p%2){
                RET(0,1);RET(1,9);
            }
    }
}

int CalcLastDigitSum(int n){
    int i,s=0;
    for(i=1;i<=n;i++)
        s=s%10+lastDigitPow(i%10,i);
    return s%10;
}

int main(){
    FILE*fi,*fo;
    int t,n,i;
    int v[]={0,1,5,2,8,3,9,2,8,7,7,8,4,7,3,8,4,1,5,4,4,5,9,6,2,7,3,6,2,1,1,2,8,1,7,2,8,5,9,8,8,9,3,0,6,1,7,0,6,5,5,6,2,5,1,6,2,9,3,2,2,3,7,4,0,5,1,4,0,9,9,0,6,9,5,0,6,3,7,6,6,7,1,8,4,9,5,8,4,3,3,4,0,3,9,4,0,7,1,0};
    fi=fopen("cifra.in","rt");
    fo=fopen("cifra.out","wt");
    fscanf(fi,"%d",&t);
    for(i=0;i<t;i++){
        fscanf(fi,"%d",&n);
        fprintf(fo, "%d\n", v[n%100] );
    }
    fclose(fi);
    fclose(fo);
    return 0;
}