Pagini recente » Cod sursa (job #2803120) | Cod sursa (job #1468053) | Cod sursa (job #2103575) | Cod sursa (job #211841) | Cod sursa (job #2197842)
#include <fstream>
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
unsigned long long P, N;
void test(int p) {
// naiv
unsigned long long prod = 1;
unsigned long long i = 1;
unsigned long long P = (unsigned long long)pow(10, p);
while (i < 50) {
cout << prod << "\n";
if (prod % P == 0) {
cout << i << "\n";
break;
}
i += 1;
prod *= i;
}
}
void a(int p) {
// testeaza numere din 5 in 5
if (p == 0)
g << 1 << " \n";
else {
int count = 0;
int x, aux;
for (x = 0; count < p;) {
x += 5;
aux = x;
while (aux % 5 == 0) { aux /= 5; count++; }
}
g << x << "\n";
}
}
unsigned long long puteri5(unsigned long long n) {
unsigned long long x = 0, p;
for (p = 5; p <= n; p*=5)
x += n / p;
return x;
}
unsigned long long st = 5, dr = 500000020, m, m_val;
int main() {
f >> P;
if (P == 0) {
g << 1;
return 0;
}
while (true) {
m = (st + dr) >> 1;
m_val = puteri5(m);
if (st == dr || m_val == P) {
g << m / 5 * 5;
break;
}
else if (m_val > P) {
dr = m - 1;
}
else if (m_val < P) {
st = m + 1;
}
}
return 0;
}