Pagini recente » Cod sursa (job #1839247) | Cod sursa (job #2060842) | Cod sursa (job #1126364) | Probleme de Taietura | Cod sursa (job #1482056)
/* Author: Raul Vasile
* Mail: [email protected]
*/
#include <stdio.h>
int zeroFact (int zeros) {
int s = 0;
while (zeros != 0) {
s += zeros / 5;
zeros /= 5;
}
return s;
}
// Rezolvare problema
int solve (int zeros) {
int number = 0, right = 0, left = 0, middle;
if (zeros == 0) {
return 1;
}
right = 5 * zeros + 1;
while (left < right) {
middle = (left + right) / 2;
int number = zeroFact (middle);
if (number < zeros) {
left = middle + 1;
} else {
if (number > zeros) {
right = middle - 1;
} else {
while (middle % 5) {
middle--;
}
return middle;
}
}
}
return -1;
}
int main(int argc, char* argv[]) {
// Declarare variable
int zeros;
// Declarare fisiere
FILE *input, *output;
// Deschidere fisiere
input = fopen("fact.in", "r");
output = fopen("fact.out", "w");
// Verificare fisiere
if (input == NULL || output == NULL) {
printf("Error opening files");
return 0;
} else {
fscanf(input, "%d", &zeros);
fprintf(output, "%d\n", solve(zeros));
}
return 0;
}