Cod sursa(job #2214649)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 19 iunie 2018 16:15:40
Problema Cifra Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 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 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",brut(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;
}