Cod sursa(job #2337762)
Utilizator | Data | 6 februarie 2019 18:18:18 | |
---|---|---|---|
Problema | Factorial | Scor | 95 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.36 kb |
#include <fstream>
using namespace std;
int main()
{
ifstream fin("fact.in");
ofstream fout("fact.out");
int n;
fin>>n;
long long int u=n*10;
long long int p=1;
long long int i=5;
long long int f=1;
long long int OK=0;
if (n==0)
fout<<1;
else
{
if (n==1)
fout<<5;
else
{
int o=1;
while (o<n)
{
o=o*5;
}
if (o==n)
{
OK=-1;
}
while (p<=u && OK==0)
{
long long int m=(p+u)/2;
long long int r=5;
long long int S=0;
while (r<m)
{
S+=m/r;
r*=5;
}
if (S<n)
{
p=m+1;
}
if (S>n)
{
u=m-1;
}
if (S==n)
{
OK=m;
}
}
if (OK>0)
{
if (OK%5==0)
fout<<OK;
else
fout<<OK-OK%5;
}
else
fout<<-1;
}
}
return 0;
}