Cod sursa(job #2315435)
| Utilizator | Data | 9 ianuarie 2019 22:55:09 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int p;
int prim(int n)
{ int i, val = 0;
for(i = 5; n / i >= 1; i *= 5)
val += (n / i);
return val;
}
int main()
{
fin>>p;
if(p==0)
{
fout<<1;
return 0;
}
else
if(p == 1)
{
fout <<5 ;
return 0;
}
int s = 1,d = 2000000000, m;
while(s <= d)
{
m=(s+d)/2;
if(prim(m)==p)
{
fout << m / 5 * 5;
return 0;
}
else
if(prim(m) <p )
s =m+1;
else
d = m-1;
}
fout << -1;
return 0;
}
