Cod sursa(job #2645767)
Utilizator | Data | 29 august 2020 15:45:34 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
long long zeros(long long m)
{
long long put=5;
long long N=0;
while(m/put)
{
N+=m/put ;
put*=5;
}
return N;
}
int main()
{ ifstream fin ("fact.in");
ofstream fout ("fact.out");
int P;
long long st = 1;
long long dr = 5e8;
fin>>P ;
while(st<=dr)
{
long long m=(st+dr)/2 ;
long long N=zeros(m);
if(N==P)
{
fout<<max(1LL, m-m%5);
return 0;
}
else {
if (N > P)
dr = m - 1;
else
st = m + 1;
}
}
fout<< "-1";
return 0;
}