Pagini recente » Cod sursa (job #2709148) | Cod sursa (job #1632945) | Cod sursa (job #841880) | Cod sursa (job #1154413) | Cod sursa (job #903971)
Cod sursa(job #903971)
#include<stdio.h>
#include<string.h>
int main()
{
int t;
char s[1000];
FILE *f=fopen("cifra.in","r"),*g=fopen("cifra.out","w");
fscanf(f,"%d",&t);
for(int i=0;i<t;i++)
{
//citeste numarul ca sir de caractere
//nu ne intereseaza decat ultimele 2 cifre
fscanf(f,"%s",s);
//ultima cifra o fac int
int lungS=strlen(s);
int nr=s[lungS-1]-48;
//daca numarul are mai mult de o cifra, formam numar din ultimele 2
if(lungS>1)
nr+=(s[lungS-2]-48)*10;
//fac calculele:
int s=0;
//incep de la 2, primul numar are intotdeauna 1 dupa ridicare deci il voi trata la final
for(int j=2;j<=nr;j++)
{
int n=j%10; // ridicarea la putere are nevoie de ultima cifra
int p=j%4; // ultima cifra se reia din 4 in 4
long x=1;
p==0?p=4:p;
for(int k=0;k<p;k++)
x*=n,x%=10;// intotdeauna pastrez doar ultima cifra
s+=x;
}
fprintf(g,"%d\n",(s+1)%10);
}
fclose(f);
fclose(g);
}