Cod sursa(job #2008529)

Utilizator kriptexPopa Serban kriptex Data 6 august 2017 19:48:17
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 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)){
				while (n % 5 != 0)
					n--;
				return n;
			}
			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;
}