Python bisect_left возвращает разные результаты, если список начинается с 0 или с другого числа?Python

Программы на Python
Anonymous
Python bisect_left возвращает разные результаты, если список начинается с 0 или с другого числа?

Сообщение Anonymous »

Я решаю задачу 2513 по лит-коду. Минимизируйте максимум два массива. Но мой вопрос касается поведения функции bisect_left в Python.

Код: Выделить всё

class Solution:
def minimizeSet(self, D1: int, D2: int, C1: int, C2: int) -> int:

return bisect_left(range(10**10), True, key=lambda M: M-M//D1 >= C1 and
M-M//D2 >= C2 and
M-M//lcm(D1,D2) >= C1+C2)
Однако, если я это сделаю,

Код: Выделить всё

class Solution:
def minimizeSet(self, D1: int, D2: int, C1: int, C2: int) -> int:

return bisect_left(3, range(10**10), True, key=lambda M: M-M//D1 >= C1 and
M-M//D2 >= C2 and
M-M//lcm(D1,D2) >= C1+C2)
Вызов bisect_left фактически возвращает 1, что меньше 3. Я совершенно не понимаю, почему это происходит, поскольку я ожидаю, что bisect_left в основном выполнит двоичный поиск в диапазоне ( 3, 10**10).
Будем признательны за любой вклад.

Подробнее здесь: https://stackoverflow.com/questions/784 ... s-other-nu

Вернуться в «Python»