Pagini recente » Cod sursa (job #1973454) | Cod sursa (job #3149101) | Cod sursa (job #2647022) | Cod sursa (job #3238655) | Cod sursa (job #2237578)
#include <iostream>
#include <fstream>
#include <vector>
std::fstream fi ("fact.in", std::ios::in);
std::fstream fo ("fact.out", std::ios::out);
void b_div (int64_t &n, int64_t d) {
int sgn = ((n < 0) ^ (d < 0)) ? -1 : 1;
n = std::abs (n); d = std::abs (d);
int64_t q = 0, t = 0;
for (int16_t i = 31; i >= 0; --i) {
if (t + (d << i) <= n) {
t += (d << i); q |= (1LL << i);
}
} n = sgn * q;
}
int numara_zerouri (int64_t n) {
int c = 0; while (n > 0) {
b_div (n, 5); c += n; }
return c;
}
int caut_bin (int64_t n) {
int64_t l = 0, h = 1e6;
while (l < h) {
int64_t m = (l + h) >> 1;
int c = numara_zerouri (m);
(c < n) ? l = m + 1 : h = m;
}
std::vector<int> rez;
while (numara_zerouri (l) == n) {
rez.push_back (l); l++;
}
return ((!rez.empty ()) ? rez.front () : (-1));
}
int main (void) {
int64_t p;
fi >> p;
fo << caut_bin (p);
return 0;
}