Cod sursa(job #285088)
Utilizator | Data | 22 martie 2009 12:50:31 | |
---|---|---|---|
Problema | Cifra | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.73 kb |
#include <stdio.h>
#include <math.h>
#include <string.h>
int putere(int pn);
FILE* f;
FILE* s;
int t;
int n;
char sir[101];
int main()
{
f=fopen ("cifra.in","r");
s=fopen ("cifra.out","w");
fscanf (f,"%d\n",&t);
for (int i=0;i<t;i++)
{
fscanf (f,"%s\n",sir);
if (strlen(sir)==1)
n=sir[strlen(sir)-1]-'0';
else
n=(sir[strlen(sir)-2]-'0')*10+sir[strlen(sir)-1]-'0';
n=n%100;
int suma=0;
for (int j=1;j<=n;j++)
suma+=putere(j);
fprintf (s,"%d\n",suma%10);
}
fclose (f);
fclose (s);
return 0;
}
int putere(int pn)
{
int numar=pn;
int ultima=numar%10;
int rezultat;
switch (ultima)
{
case 0: rezultat=0;
break;
case 1: rezultat=1;
break;
case 2: switch(numar%4)
{
case 0: rezultat=6;
break;
case 1: rezultat=2;
break;
case 2: rezultat=4;
break;
case 3: rezultat=8;
break;
}
break;
case 3: switch(numar%4)
{
case 0: rezultat=1;
break;
case 1: rezultat=3;
break;
case 2: rezultat=9;
break;
case 3: rezultat=7;
break;
}
break;
case 4: switch(numar%2)
{
case 0: rezultat=6;
break;
case 1: rezultat=4;
break;
}
break;
case 5: rezultat=5;
break;
case 6: rezultat=6;
break;
case 7: switch(numar%4)
{
case 0: rezultat=1;
break;
case 1: rezultat=7;
break;
case 2: rezultat=9;
break;
case 3: rezultat=3;
break;
}
break;
case 8: switch(numar%4)
{
case 0: rezultat=6;
break;
case 1: rezultat=8;
break;
case 2: rezultat=4;
break;
case 3: rezultat=2;
break;
}
break;
case 9: switch(numar%2)
{
case 0: rezultat=1;
break;
case 1: rezultat=9;
break;
}
break;
}
return rezultat;
}