Cod sursa(job #606942)

Utilizator Brz_VladBrezae Vlad Brz_Vlad Data 10 august 2011 14:40:57
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>

int Nr5(int n) // puterea lui 5 din descompunerea lui n!
{
	int rez=0;
	while((n=n/5)!=0)
		rez +=n;
	return rez;
}


int main(int argc, char* argv[])
{
	FILE *fpr,*fpw;

	int P,N;
	const int nmax = 400000015;
	bool found=false;

	int a=1,b=nmax;
	int c = (a+b)/2;
	int val = Nr5(c);
	int t1 = Nr5(a),t2 = Nr5(b);

	fpr = fopen("fact.in","r");
	fpw = fopen("fact.out","w");

	fscanf(fpr,"%d",&P);

	while(t1<= P && P<=t2){
		c = (a+b)/2;
		val = Nr5(c);

		if(P<val){
			b = c;
			t2 = val;
		}
		else if(P>val){
			a = c+1;
			t1 = Nr5(a);
		}
		else{
			found = true;
			break;
		}
	}
	if(found){
		if(c<5)
			fprintf(fpw,"1");
		else
			fprintf(fpw,"%d",c-c%5);
	}
	else
		fprintf(fpw,"-1");

	fclose(fpr);
	fclose(fpw);
	return 0;
}