Cod sursa(job #2776290)
Utilizator | Data | 19 septembrie 2021 10:54:55 | |
---|---|---|---|
Problema | Factorial | Scor | 60 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int nr_de_zerouri(int n);
int main()
{
int p;
fin >> p;
if(p == 0)
{
fout << 1;
}
else
{
int l = 1, r =100000000, m, k, n = -1;
while(l <= r)
{
m = (l + r) / 2;
k = nr_de_zerouri(m);
if(k == p)
{
n = m;
break;
}
else if(k > p)
{
r = m - 1;
}
else
{
l = m + 1;
}
}
if(n == -1)
{
fout << "-1";
}
else
{
fout << n - n % 5;
}
}
fin.close();
fout.close();
return 0;
}
int nr_de_zerouri(int n)
{
int nr = 0;
for(int i = 5; n / i >= 1; i *= 5)
{
nr += n / i;
}
return nr;
}