Pagini recente » Cod sursa (job #730907) | Cod sursa (job #766721) | Cod sursa (job #187542) | Cod sursa (job #619982) | Cod sursa (job #949025)
Cod sursa(job #949025)
#include <stdio.h>
#define INPUT_FILE "fact.in"
#define OUTPUT_FILE "fact.out"
#define TRUE 1
#define FALSE 0
int main()
{
unsigned long p, actual, n;
unsigned int i, crt, order_change;
unsigned int powers[20] = {0};
FILE *f;
/* read p */
f = fopen(INPUT_FILE, "rt");
fscanf(f, "%ld", &p);
fclose(f);
/* calculate n */
actual = 0;
crt = 0;
n = 0;
while (actual < p) {
n += 5;
// printf("n = %d\n", n);
order_change = FALSE;
/* get crt for this n */
powers[crt]++;
while (powers[crt] == 5) {
order_change = TRUE;
crt++;
powers[crt]++;
}
actual += crt + 1;
/* restore crt for next */
if (order_change == TRUE) {
for (i = 0; i < crt; i++)
powers[i] = 0;
crt = 0;
}
};
if (actual > p) {
n = -1;
}
if (n == 0) {
n = 1;
}
/* write n */
f = fopen(OUTPUT_FILE, "wt");
fprintf(f, "%ld", n);
fclose(f);
return 0;
}