Cod sursa(job #1741651)

Utilizator patcasrarespatcas rares danut patcasrares Data 14 august 2016 17:26:47
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
using namespace std;
ifstream fi("fact.in");
ofstream fo("fact.out");
int Z;
int st,dr,p2,p5,m,nrz;
int f(int n, int p)
// returneaza puterea la care apare numarul prim p
// in n!
{
	int rez=0,v=p;
	while (n>=v)
	{
		rez=rez+n/v;
		v=v*p;
	}
	return rez;
}

int main()
{
	fi>>Z;
	// rezultatul este cautat binar in intervalul [1,1000000000]
	st=1;
	dr=1000000000;
	while (st<dr)
	{
		m=(st+dr)/2;
		p2=f(m,2);
		p5=f(m,5);
		nrz=min(p2,p5);
		if (nrz>=Z)
			dr=m;
		else
			st=m+1;
	}
	p2=f(st,2);
	p5=f(st,5);
	nrz=min(p2,p5);	
	if (nrz==Z)
		fo<<st;
	else
		fo<<-1;
	fi.close();
	fo.close();
	return 0;
}