Cod sursa(job #2008495)

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

using namespace std;

int zerouri(int x){
	int c = 0;
	while (x % 5 == 0){
		x /= 5;
		c++;
	}
	return c;
}

int numaratoare(int x){
	int c = 0;
	for (int i = 5; i <= x; i += 5)
		c += zerouri(i);
	return c;
}

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 == numaratoare(n))
				if (n % 5 == 0)
					return n;
				else
					dr = n - 1;
			else
				if (p < numaratoare(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;
}