Cod sursa(job #11828)

Utilizator OnerinCiobanescu Adina Onerin Data 1 februarie 2007 21:00:16
Problema Factorial Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>
int exp;

long putere(long a){
   long v=5;
   while(v<a){
	v*=5;
	exp++;
   }
   return v/5;
}

int zerouri(){
	int i=0,c=1,s=0;
	while(i+1<exp){
		c*=5;
		s+=c;
		i++;
	}
	return s+1;
}

int main(){
	FILE *f;
	f=fopen("fact.in","r");
	long p,p2,k;
	int z;
	fscanf(f,"%ld",&p);
	fclose(f);
	f=fopen("fact.out","w");
	if(p==0)     fprintf(f,"1");
	else{
		p2=5*p;
		k=putere(p2);
	//k=cea mai mare putere a lui 5 <p2
		z=zerouri();
	//z=nr de zerouri ale lui k fact
		p=(p-z)*5+k;
		fprintf(f,"%ld",p);

	}
	fprintf(f,"\n");
	fclose(f);
	return 0;
}