Cod sursa(job #2987707)
Utilizator | Crull Thomas CrullT | Data | 2 martie 2023 18:19:09 |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <fstream>
#include <climits>
using namespace std;
ifstream in ("fact.in");
ofstream out ("fact.out");
int verif (long long n)
{
long long fact=5;
int cnt=0;
while(fact<=n)
{
cnt+=n/fact;
fact*=5;
}
return cnt;
}
int main()
{
long long p,st=1,dr=INT_MAX,m,q;
in>>p;
if(p==0)
{
out<<1;
return 0;
}
while(st<=dr)
{
m=((st+dr)/2)*5;
q=verif(m);
if(q<p)
st=(m+5)/5;
else if(q>p)
dr=(m-5)/5;
else
{
out<<m;
return 0;
}
}
out<<-1;
return 0;
}