Cod sursa(job #1781000)

Utilizator nnnmmmcioltan alex nnnmmm Data 16 octombrie 2016 17:21:47
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
#include<cstring>

struct Numar_mare
{
 int nr_cifre=0;
 char cifre[101];
 void Init(char *s);
 int Modulo_100();
};

void Numar_mare::Init(char *s)
{
 nr_cifre=strlen(s);
 for(int i=0;i<nr_cifre;i++)
     cifre[i]=s[i]-'0';
}

int Numar_mare::Modulo_100()
{
 if(nr_cifre>=2)
    return cifre[nr_cifre-2]*10+cifre[nr_cifre-1];
 if(nr_cifre==0)
    return 0;
 return cifre[nr_cifre-1];
}

int rasp[101];

int Put(int baza,int putere)
{
 if(putere==1)
    return baza%100;
 int x=Put(baza,putere/2);
 return ((x*x)%10)*(putere%2?baza:1)%10;
}

void PreCalc()
{
 for(int i=1;i<=100;i++)
     {
      rasp[i]=rasp[i-1]+Put(i,i);
      rasp[i]%=10;
     }
}

Numar_mare nr_mare;
char cifre[101];

int main()
{
 PreCalc();

 FILE *in=fopen("cifra.in","r");
 int nr_teste=0;
 fscanf(in,"%d ",&nr_teste);
 FILE *out=fopen("cifra.out","w");
 for(int test=1;test<=nr_teste;test++)
     {
      fscanf(in,"%s ",cifre);
      nr_mare.Init(cifre);
      fprintf(out,"%d\n",rasp[nr_mare.Modulo_100()]);
     }
 fclose(in);
 fclose(out);
 return 0;
}