Cod sursa(job #2897030)
Utilizator | Morosanu Alexandru alexmorosanu | Data | 2 mai 2022 09:56:19 |
---|---|---|---|
Problema | Factorial | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
unsigned long long p, sol, st, dr, mij, nr;
unsigned long long fact5(unsigned long long x)
{
unsigned long long p = 5, sol = 0, lastp = 1;
while (p <= x && p > lastp)
{
sol += x / p;
lastp = p;
p *= 5;
}
return sol;
}
int main()
{
f >> p;
sol = p + 1;
st = 1;
dr = 1e9;
while (st <= dr)
{
mij = (st + dr) / 2;
nr = fact5(mij);
if (nr >= p)
{
sol = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
g << sol;
return 0;
}