Cod sursa(job #1477269)

Utilizator mike93Indricean Mihai mike93 Data 25 august 2015 19:55:59
Problema Factorial Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>

long put5[13];
long p;

long suma(long n) {
	int i;
	long val = 0;
	for(i=1; i<13; i++) {
		val = val + n/put5[i];
	}
	return val;
}

long cauta(long l, long h) {
	if((h - l) == 1) {
		return h;
	} else {
		long m = (l + h)/2;
		long s = suma(m);
		if(s < p) {
			return cauta(m, h);
		} else {
			return cauta(l,m);
		}
	}
}

int main() {
	FILE* fin = fopen("fact.in", "r");
	fscanf(fin, "%ld\n", &p);
	fclose(fin);
	
	put5[0] = 1;
	int i;
	for(i=1; i<13; i++) {
		put5[i] = put5[i-1] * 5;
	}
	long res;
	if(p==0) {
		res = 1;
	} else {
		res = cauta(1, p * 5);
	}
	
	FILE* fout = fopen("fact.out", "w");
	fprintf(fout,"%ld\n", res);
	fclose(fout);
	return 0;
}