Cod sursa(job #2389975)
| Utilizator | Data | 27 martie 2019 17:39:46 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f ( "fact.in" ); ofstream g ( "fact.out" );
ll nrzero( ll n )
{ if(!n) return 1;
ll nr2=0,nr5=0,cn=n;
while(cn)
{ nr2+=cn>>1;
cn>>=1;
}
while(n)
{ nr5+=n/5;
n/=5;
}
return min(nr2,nr5);
}
int main()
{ int p;
f>>p;
ll mij,st=1,dr=1e18;
while(st<dr)
{ mij=(st+dr)>>1;
ll nrz=nrzero(mij);
if(p<=nrz) dr=mij;
else st=mij+1;
}
if(nrzero(st)==p) g<<st; else g<<"-1 ";
return 0;
}
