Cod sursa(job #1463122)

Utilizator ramhackNastase Ramon ramhack Data 20 iulie 2015 09:39:52
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <cstdio>
#include <math.h>

using namespace std;

const unsigned long MAX = 100000000;

unsigned long fact(unsigned long N) {

	if(N <= 1) {
		return 1;
	}
	else {
		return N * fact(N-1);
	}
}

int nrZero(unsigned long N) {

	unsigned long nr = 0;
	int result = 0;

	for(unsigned long i = 5; i <= N; i+=5) {
		nr = i;

		while(nr % 5 == 0) {
			nr /= 5;
			result++;
		}
	}

	return result;
}

int main(int argc, char const *argv[])
{
	FILE *fIn,*fOut;

	if((fIn = fopen("fact.in", "r")) == NULL) {
		fprintf(stderr, "Can't open file\n");
		return 0;
	}

	fOut = fopen("fact.out","w");
	int P; unsigned long res;
	bool OK = false;

	fscanf(fIn,"%d", &P);

	if(P == 0) {
		res = 1;
		fprintf(fOut, "%d\n", res);
		return 0;
	}

	for(unsigned long i = 1; i <= MAX; ++i) {

		res = nrZero(i);
		
		if(res == P) {
			cout << i << endl;
			fprintf(fOut, "%d\n", i);
			break;
		}
	}
	// }
	// unsigned long tmp = (unsigned long)pow(10,P);
	// for(unsigned long i = 1; i <= MAX; ++i) {

	// 	res = fact(i);
		
	// 	if(res %  tmp == 0) {
	// 		cout << i << ' ' << tmp << endl;
	// 		fprintf(fOut, "%d\n", i);
	// 		OK = true;
	// 		break;
	// 	}
	// }

	// if(!OK) {
	// 	fprintf(fOut, "%d\n", -1);
	// }

	// cout << fact(45) << endl;




	fclose(fOut);
	fclose(fIn);

	return 0;
}