Cod sursa(job #2103721)
| Utilizator | Data | 10 ianuarie 2018 18:27:37 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.49 kb |
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("fact.in");
ofstream out("fact.out");
ll p, st, dr, mid;
ll get(ll nr){
ll rs = 0;
for(ll p = 5; p <= nr; p *= 5)
rs += nr / p;
return rs;
}
int main(){
in >> p;
if(p == 0)
return out << '1', 0;
st = 1; dr = (ll)1e18;
while(st <= dr){
mid = st + (dr - st) / 2;
if(get(mid) >= p)
dr = mid - 1;
else
st = mid + 1;
}
out << (get(st) != p ? -1 : st);
return 0;
}
