Cod sursa(job #2961428)
Utilizator | Data | 6 ianuarie 2023 14:55:02 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <iostream>
using namespace std;
int cnt5(int N) {
int s = 0;
while(N >= 5) {
s += N / 5;
N /= 5;
}
return s;
}
int solve(int P) {
int st = 1, dr = 1e9, mid, last, last_ans;
while (st <= dr) {
mid = (st + dr) / 2;
int ans = cnt5(mid);
if(ans < P) {
st = mid + 1;
} else {
dr = mid - 1;
last_ans = ans;
last = mid;
}
}
if(last_ans != P) {
return -1;
}
return last;
}
int main()
{
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
int P;
cin >> P;
cout << solve(P);
return 0;
}