Cod sursa(job #1425986)

Utilizator mihaistanusoiuStanusoiu Mihai mihaistanusoiu Data 28 aprilie 2015 18:17:24
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<cstdio>
using namespace std;
FILE *f, *g;
/*
ifstream f("fact.in");
ofstream g("fact.out");
*/
int p,put[16],i,st,dr,mij,q,nr,sol;

int main ()
{
	f=fopen("fact.in","r");
	g=fopen("fact.out","w");
	fscanf(f,"%d",&p);
	put[1]=5,put[0]=1;
	for(i=2;i<=15;i++)
		put[i]=put[i-1]*5;
	st=1,dr=1000000001;
	while(st<dr)
	{
		mij=(st+dr)/2;
		q=1;
		nr=0;
		for(i=1;i<=15 && q;i++)
		{
			if(mij/put[i]==0)
				q=0;
			else
				nr+=mij/put[i];
		}
		if(nr<p)
			st=mij+1;
		else
			dr=mij;
	}
	q=1;
	for(i=1;i<=15 && q;i++)
		if(st/put[i]==0)
			q=0;
		else
			sol+=st/put[i];
	if(sol==p)
		fprintf(g,"%d",st);
	else
		fprintf(g,"-1");
	return 0;
}