Cod sursa(job #2214652)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 19 iunie 2018 16:20:42
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<stdio.h>
#include<string.h>
#define MOD 10
#define MAXBUF 100
FILE*fin,*fout;

int lgput(int a,int b);
int brut(int nr);
int ans[100]={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};
int main()
{
    fin=fopen("cifra.in","r");
    fout=fopen("cifra.out","w");
    int T;
    fscanf(fin,"%d",&T);
    fgetc(fin);
    char num[MAXBUF+2];
    for(int i=1;i<=T;i++)
    {
        fgets(num,MAXBUF+2,fin);
        int len=strlen(num)-1;
        int rest;
        if(len==1)
        {
            rest=num[len-1]-'0';
        }
        else
        {
            rest=(num[len-2]-'0')*10+num[len-1]-'0';
        }
        fprintf(fout,"%d\n",ans[rest]);
    }
    fclose(fin);
    fclose(fout);
    return 0;

}
int lgput(int a,int b)
{
    if(b==0)
    {
        return 1;
    }
    int r=1;
    while(b>1)
    {
        if(b%2==0)
        {
            a=(a*a)%MOD;
        }
        else
        {
            r=(r*a)%MOD;
            a=(a*a)%MOD;
        }
        b/=2;
    }
    return (r*a)%MOD;
}
int brut(int nr)
{
    int sum=0;

    for(int i=1;i<=nr;i++)
    {
        sum+=lgput(i,i);
        sum%=MOD;
    }
    return sum;
}