Pagini recente » Cod sursa (job #745325) | Cod sursa (job #256791) | Cod sursa (job #808499) | Cod sursa (job #1372436) | Cod sursa (job #949067)
Cod sursa(job #949067)
#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;
order_change = FALSE;
/* get crt for this n */
powers[crt]++;
if (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);
printf("p = %8ld, n = %8ld\n", p, n);
return 0;
}