Перевод кода Python в C++
переведите, пожалуйста код с питона на с++, заранее благодарен.
def f(m):
return max((w // (a + 2 * m)) * (h // (b + 2 * m)),
(h // (a + 2 * m)) * (w // (b + 2 * m)))
n, a, b, w, h = [int (i) for i in input().split()]
l = 0
r = 10 ** 18
while r - 1 > 1:
m = (l+r) // 2
if f(m) >= n:
l = m
else:
r = m
print(l)
c++:
void f(int m,int w,int h,int a, int b) {
return min((w / (a + 2 * m)) * (h / (b + 2 * m)));
return ((h / (a + 2 * m)) * (w / (b + 2 * m)));
}
Ответы (1 шт):
Автор решения: pagislav
→ Ссылка
#include <iostream>
#include <algorithm>
using namespace std;
int64_t n, a, b, w, h;
int64_t f(int64_t m)
{
int64_t first = (a + 2 * m);
int64_t second = (b + 2 * m);
return max(w / first * h / second, h / first * w / second);
}
int main()
{
cin >> n >> a >> b >> w >> h;
int64_t l = 0;
int64_t r = 1e+18;
while (r-1 > 1)
{
int64_t m = (l+r)/2;
if (f(m) >= n) l = m;
else r = m;
}
cout << l << endl;
return 0;
}
Код переведён, но бинарный поиск сам написан неверно, while (r-1 > l), скорее так будет верно