Cod sursa(job #2221529)

Utilizator beatrice01Ferco Beatrice beatrice01 Data 14 iulie 2018 17:11:52
Problema Factorial Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");

int p, n , nr0;

int puteri(int x, int div)
{
	int exp = 0;
	while (x % div == 0)
	{
		x = x / div;
		exp++;
	}
	return exp;
}

int main()
{
	f >> p;
	if (p == 0) { g << "1"; return 0; }
	
	n = 5; // incepe cu 5!, contine 2^1 si 5^1 -> nr0= 1
	int exp2 = 1, exp5 = 1; // puterile lui 2 si ale lui 5 continute in n!
	nr0 = 1;
	while (nr0 < p)
	{
		n++; // pt fiecare nou numar din n!, aduna puterile sale de 2 si 5
		int p2 = puteri(n, 2);
		int p5 = puteri(n, 5);

		exp2 += p2;
		exp5 += p5;
		//cout << n << " " << exp2 << " " << exp5 << "\n";
		
		if (n % 5 == 0 || n % 2 == 0) {
			if (exp2 < exp5) nr0 = exp2;
			else nr0 = exp5;
		}
		
	}
	if (nr0 == p)
		g << n;
	else
		g << "-1";

	//system("pause");
	return 0;
}