Pagini recente » Cod sursa (job #324388) | Cod sursa (job #654201) | Cod sursa (job #881742) | Cod sursa (job #191067) | Cod sursa (job #2221529)
#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;
}