Cod sursa(job #2640325)

Utilizator bianca.ialangiBiancaI bianca.ialangi Data 6 august 2020 01:54:44
Problema Factorial Scor 20
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>

int main() {
	int p, pow, x, aux1, aux2, pow_aux1, pow_aux2;

	FILE *in = fopen("fact.in", "rt");
	FILE *out = fopen("fact.out", "wt");

	fscanf(in, "%d", &p);

	pow = 25;

	if (p == 0) {
		x = 1;
	} else {

		x = 5 * p;

		while (x >= pow) {
			pow = pow * 5;
		}

		pow = pow / 5;

		aux1 = p;
		aux2 = p;
		pow_aux1 = pow;
		pow_aux2 = pow;

	while ((x / pow) >= 1) {
		p = p - x/pow;
		if (p >= 0 ) {
			x = p * 5;
			pow = pow/5;
			if (pow == 5) {
				break;
			}
		}

	}

	while ((x / pow_aux1) >= 1) {
		aux1 = aux1 - x/pow_aux1;
		if (aux1 >= 0 ) {
			pow_aux1 = pow_aux1/5;
			if (pow_aux1 == 5) {
				break;
			}
		}
	}

	x = aux1 * 5;

	while (pow_aux2 > 1) {
		aux2 = aux2 - x/pow_aux2;
		pow_aux2 = pow_aux2/5;
	}

	if (aux2 < 0) {
		x = -1;
	}
}

	fprintf(out, "%d\n", x);

	fclose(in);
	fclose(out);


	return 0;

}