Cod sursa(job #52664)

Utilizator pustiuRadu Zaharia pustiu Data 19 aprilie 2007 17:40:50
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include<stdio.h>
#include<string.h>

int T;

FILE *in = fopen ("cifra.in", "rt");
FILE *out = fopen ("cifra.out", "wt");

int citire ()
{
	char x[101];
    fgets(x,101,in);
    int k=strlen(x)-1;
    if(k>=3)
    	return((x[k-3]-48)*100+(x[k-2]-48)*10+x[k-1]-48);
    if(k>=2)
        return((x[k-2]-48)*10+x[k-1]-48);
    else
    	return x[0]-48;
}

void rezolvare ()
{
    fscanf(in, "%d", &T);
    fgetc(in);
    for(int j=1;j<=T;j++)
    {
    	int y=citire();
        int k=y/10;
        k*=47;
        k=k%10;
        int x=y%10;
        for(int i=1;i<=y%10;i++)
        {
        	if(i==1)
            	k++;
            if(i==2)
            {
	        	if((y-x+i)%4==0)
                	k+=6;
                if((y-x+i)%4==2)
                	k+=4;
            }
            if(i==3)
            {
            	if((y-x+i)%4==1)
                	k+=3;
                if((y-x+i)%4==3)
                	k+=7;
            }
            if(i==4)
              	k+=6;
            if(i==5)
            	k+=5;
            if(i==6)
            	k+=6;
            if(i==7)
            {
            	if((y-x+i)%4==1)
                	k+=7;
                if((y-x+i)%4==3)
                	k+=3;
            }
            if(i==8)
            {
            	if((y-x+i)%4==2)
                	k+=4;
                if((y-x+i)%4==0)
                	k+=6;
            }
            if(i==9)
            	k+=1;
        }
        k=k%10;
        fprintf(out,"%d\n",k);
    }
}

int main()
{
    rezolvare();
    fclose(in);
    fclose(out);
    return 0;
}