Cod sursa(job #2797403)

Utilizator Cyf0Spineanu Rares Cyf0 Data 9 noiembrie 2021 20:39:38
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
//Lema:Pentru n natural si p si q numere prime cu p<q avem v_p(n!)>=v_q(n!)
//Dem lema: Rezulta imediat din formula lui Legendre
//Din lema trebuie sa aflam doar v_5(n!)
#include <iostream>
#include <fstream>
#include <cmath>
#include <climits>
using namespace std;
int legendre(int N)
{
	int s = 0, i=1;
	while (pow(5, i) <= N)
	{
		s += N / pow(5, i);
		i++;
	}
	return s;
}
int main()
{
	ifstream fin("fact.in");
	ofstream fout("fact.out");
	int P;
	fin >> P;
	int st = 1, dr = INT_MAX-1, sol=-1;
	while (st <= dr)
	{
		int mij = (st + dr) / 2;
		if (legendre(mij) >= P)
		{
			dr = mij - 1;
			if (legendre(mij) == P)
				sol = mij;
		}
		else
		{
			st = mij + 1;
		}
	}
	fout << sol;
}