Cod sursa(job #12859)

Utilizator rapidu36Victor Manz rapidu36 Data 5 februarie 2007 00:14:20
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
#define P 100000000
#define N 500000
struct puteri{
	int val,zero;
};
int n,p;
puteri v[N];
void citire(){
	FILE *in=fopen("fact.in","r");
	fscanf(in,"%d",&p);
	fclose(in);
	v[0].val=1;
	v[0].zero=0;
	for(n=1;v[n-1].zero<=p;n++){
		v[n].zero=v[n-1].val+v[n-1].zero;
		v[n].val=5*v[n-1].val;
	}
}
int calcul(int p){
	int i,s=0;
	if(!p)
		return 1;
	while(p){
		for(i=0;i<n&&v[i].zero<=p;i++);
		i--;
		s+=v[i].val*(p/v[i].zero);
		p%=v[i].zero;
	}
	return s;
}
void scrie(){
	int r1=calcul(p),r2=calcul(p+1);
	FILE *out=fopen("fact.out","w");
	if(r1==r2)
		fprintf(out,"-1\n");
	else
		fprintf(out,"%d\n",r1);
	fclose(out);
}
int main(){
	citire();
	scrie();
	return 0;
}