Pagini recente » Cod sursa (job #980300) | Cod sursa (job #570811) | Cod sursa (job #2420423) | Cod sursa (job #3214789) | Cod sursa (job #526763)
Cod sursa(job #526763)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char caractere[101];
int cifre[101];
int nr_cifre;
}
numar;
int valid(numar n)
{
if(n.nr_cifre>1)
{
return 1;
}
if(n.cifre[0]==0)
{
return 0;
}
return 1;
}
numar scadere(numar n)
{
int i;
n.cifre[n.nr_cifre-1]--;
for(i=n.nr_cifre-1;i>=0;i--)
{
if(n.cifre[i]<0)
{
n.cifre[i]=9;
n.cifre[i-1]--;
}
else
{
break;
}
}
if(n.nr_cifre>1)
{
if(n.cifre[0]==0)
{
for(i=0;i<n.nr_cifre;i++)
{
n.cifre[i]=n.cifre[i+1];
}
n.nr_cifre--;
}
}
return n;
}
int putere(int n, int p)
{
int i, uc;
i=1;
uc=n;
if(p==0)
{
for(i=1;i<4;i++)
{
uc=(uc*n)%10;
}
}
else
{
for(i=1;i<p;i++)
{
uc=(uc*n)%10;
}
}
return uc;
}
int main()
{
FILE *fin, *fout;
fin=fopen("cifra.in", "r");
fout=fopen("cifra.out", "w");
int k, uc, uc_final, d, m;
numar n;
fscanf(fin, "%d", &k);
while(k>0)
{
k--;
uc_final=0;
fscanf(fin, "%s", &n.caractere);
n.nr_cifre=0;
while(((int)n.caractere[n.nr_cifre]>=(int)'0')&&((int)n.caractere[n.nr_cifre]<=(int)'9'))
{
n.cifre[n.nr_cifre]=(int)n.caractere[n.nr_cifre]-(int)'0';
n.nr_cifre++;
}
m=n.cifre[n.nr_cifre-1]+10*n.cifre[n.nr_cifre-2];
while(m>0)
{
switch(m%10)
{
case 0: uc=0;
break;
case 1: uc=1;
break;
case 5: uc=5;
break;
case 6: uc=6;
break;
default:d=m;
uc=putere(m%10, d%4);
break;
}
uc_final=(uc_final+uc)%10;
m--;
}
fprintf(fout, "%d\n", uc_final);
}
return 0;
}