Pagini recente » Cod sursa (job #2500527) | Cod sursa (job #2390403) | Cod sursa (job #1596340) | Cod sursa (job #2088137) | Cod sursa (job #2623072)
#include <iostream>
using namespace std;
///consideram descompunerea lui x! in factori primi
int cinci(int x)
{
int result=0;
while(x/5)
{
///prima oara aflam numarul de 5 in componenta x!, apoi numarul de 5 in plus - provenite de la 25 -, etc...
result+=x/5;
x=x/5;
}
return result;
}
long long factorial(long long k)
{
///avem un algoritm asemanator cautarii binare.
long long i=0,j=5*(k);
if(k==0)return 1;
long long m=1;
while(i<j)
{
m=(i+j)/2;
int actual=cinci(m);
if(actual>=k)
j=m;
else i=m+1;
}
return i;
}
int main()
{
ifstream in("fact.in");
ofstream out("fact.out");
int P;
in>>P;
out<<factorial(P)<<"\n";
return 0;
}