Cod sursa(job #1463052)

Utilizator ramhackNastase Ramon ramhack Data 19 iulie 2015 21:32:12
Problema Factorial Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 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 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;
	}
	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;
}