Pagini recente » Cod sursa (job #141018) | Cod sursa (job #3292764) | Cod sursa (job #42289) | Cod sursa (job #2837745) | Cod sursa (job #1745)
Cod sursa(job #1745)
#include <stdio.h>
const char *fin = "fact.in";
const char *fout = "fact.out";
unsigned int countZeros(unsigned int num) {
unsigned int z = 0, pow = 5;
while (pow <= num) {
z += num / pow;
pow *= 5;
}
return z;
}
int bins(unsigned int from, unsigned int to, unsigned int zeros) {
if (from > to) {
return -1;
}
int m = (from + to) / 2;
unsigned int z = countZeros(m);
if (z < zeros) {
return bins(m + 1, to, zeros);
} else if (z > zeros) {
return bins(from, m - 1, zeros);
} else {
int p = bins(from, m - 1, zeros);
if (p != -1) {
return p;
} else {
return m;
}
}
}
int main() {
unsigned int p = 0;
FILE *f = fopen(fin, "rt");
fscanf(f, "%d", &p);
fclose(f);
f = fopen(fout, "wt");
//for (int i = 0; i <= p; ++i) {
fprintf(f, "%d\n", bins(1, 5 * p + 1, p));
//}
fclose(f);
}