Cod sursa(job #354924)

Utilizator ChurchilRadulescu Adrian Churchil Data 9 octombrie 2009 21:47:55
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
FILE *f,*g;
long int n,t;

long suma(){
long s,j,nr,k;
s=(1+4+7+6+5+6+3+6+9)+1*k+(4*2*k+6*3*k);
s+=(k/3)*3+(k-(k/3))*7;
s+=6*(k/2);
s+=5*k;
s+=6*k;
s+=3*(k/3)+(k-(k/3))*7;
nr=0;
for(j=4;j<=k;j++) {
   if(j%10==4) {nr++;}
}
s+=6*nr+(k-nr)*4;
s+=9*k;
return s;
}

long int ultima(long x,long y){
long i;
 for(i=1;i<=y;i++) {
	x=x%10;
	x*=y;
 }
return x;
}

int main(){
long k,i,s,j,nr,r;
		f=fopen("cifra.in","r");
		g=fopen("cifra.out","w");
		fscanf(f,"%ld",&t);

		for(i=1;i<=t;i++) {
		   fscanf(f,"%ld",&n);
		   k=n/10;
		   if(k==0) {s=0;}
		   if(k>1) {
			 s=suma();
		   }
		   if(n%10==0) {
			 s=s%10;
		   }
		   else{
			   k=k*10;
			   s+=1;
			   for(i=2;i<=n%10;i++) {
				  r=k+i;
				  if(r%4==0) {s+=ultima(i,4);}
				  else if(r%3==0) {s+=ultima(i,3);}
				  else if(r%2==0) {s+=ultima(i,2);}
				  else {s+=i;}
			   }
		   }
		   s=s%10;
		   fprintf(g,"%ld\n",s);
		}
return 0;
}