Cod sursa(job #1960833)
| Utilizator | Data | 10 aprilie 2017 18:29:18 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
long p;
long long zero(long long n){
long long z=0, c;
c = 5;
while(c<=n){
z+=n/c;
c *=5;
}
return z;
}
long long wanted(long long b, long long e){
while(b<e){
long long mid;
mid = (b+e)/2;
if(zero(mid)>=p) e = mid;
else b = mid + 1;
}
return (b+e)/2;
}
int main(){
fin>>p;
if(p==0) fout<<1;
else {long long fact = wanted(1,500000000);
if(p==zero(fact)) fout<<fact;
else fout<<-1;
}
return 0;
}
