Cod sursa(job #2152870)
| Utilizator | Data | 5 martie 2018 20:41:34 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <bits/stdc++.h>
using namespace std;
int expr(int n)
{
int p5=1,s=0;
while(p5<n)
p5*=5;
if(p5>n)
p5/=5;
while(p5>1)
{
s+=n/p5;
p5/=5;
}
return s;
}
int main()
{
ifstream cin("fact.in");
ofstream cout("fact.out");
int p,poz=INT_MAX;
cin>>p;
int dr=500000000;
int st=1;
int mijl=(st+dr)/2;
while(st<=dr)
{
if(expr(mijl)>=p)
dr=mijl-1;
if(expr(mijl)==p and mijl<poz)
poz=mijl;
if(expr(mijl)<p)
st=mijl+1;
mijl=(st+dr)/2;
}
if(poz!=INT_MAX)
cout<<poz;
else
cout<<"-1";
return 0;
}
