Cod sursa(job #2008546)

Utilizator kriptexPopa Serban kriptex Data 6 august 2017 20:39:45
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

int zerouri(int x){
	int nr_zero = 0, c, copy;
	for (int i = 5; i <= x; i += 5){
		c = 0;
		copy = i;
		while (copy % 5 == 0){
			copy /= 5;
			c++;
		}
		nr_zero += c;
	}
	return nr_zero;
}

int factorial(int p){
	int n, st, dr;
	if (p == 0)
		return 1;
	else{
		st = 0; dr = 5 * p;
		while (st <= dr){
			n = (st + dr) / 2;
			if (p == zerouri(n)){
				while (n % 5 != 0)
					n--;
				return n;
			}
			if (p < zerouri(n))
				dr = n - 1;
			else
				st = n + 1;
		}
		return -1;
	}
}

int main(){
	int p;
	ifstream citire ("fact.in");
	citire >> p;
	citire.close();
	ofstream afisare ("fact.out");
	afisare << factorial(p);
	afisare.close();
	return 0;
}