Cod sursa(job #2974327)
Utilizator | Data | 3 februarie 2023 20:56:05 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <bits/stdc++.h>
using namespace std;
#if 1
#define cin fin
#define cout fout
ifstream fin("fact.in");
ofstream fout("fact.out");
#endif
#define ll long long
ll eval(ll nz){
ll ans = 0;
ll sv = 5,r;
do{
r = nz/sv;
ans += r;
sv *= 5;
}while(r);
return ans;
}
int main()
{
int n;
cin >> n;
ll st = 1, dr = 5e8;
ll p = 0;
while(st<=dr){
ll md = (st+dr)/2;
ll val = eval(md);
if(val >= n){
p = md;
dr = md - 1;
}
else
st = md + 1;
}
if(eval(p)==n)
cout << p;
else
cout << -1;
}