Sonya2896
10.10.2021 20:16

How to add a loop to a program?​

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
арина1492
24.01.2021 08:15
Для групповых операций с файлами
используются
маски имен файлов. Маска представляет собой
последовательность букв, цифр и прочих допустимых в именах файлов символов, в
которых также могут встречаться следующие символы: символ «?» (вопросительный
знак) означает ровно один произвольный символ; символ «*» (звездочка) означает любую последовательность символов
произвольной длины, в том числе «*» может задавать и пустую последовательность.

Определите,
какое из указанных имен файлов удовлетворяет маске: ?el*.t*xt.

A) spell.txt

B) pencil.text

C) el.txt

D) welcome.text
0,0(0 оценок)
Ответ:
KoCmiK11
18.04.2023 18:45

Просто прогоняем бинарный поиск дважды, сначала ищем ближайшее число, не большее нужного, потом не меньшее. Для того, чтобы такие числа были, можно дописать в массив очень большое число и очень маленькое. Затем выбираем из этих двух найденных чисел то, что будет ближе.

Пример реализации:

def bin_search(arr, target, kind="<="):

   assert kind in ["<=", ">="]

   if kind == "<=":

       comp = lambda a, b: a <= b

   else:

       comp = lambda a, b: a < b

   l = 0

   r = len(a) - 1

   while l < r - 1:

       m = (l + r) // 2

       if comp(a[m], target):

           l = m

       else:

           r = m

   if kind == "<=":

       return arr[l]

   else:

       return arr[r]

def nearest(arr, target):

   nearest_le = bin_search(arr, target, "<=")

   nearest_ge = bin_search(arr, target, ">=")

   if nearest_ge - target < target - nearest_le:

       return nearest_ge

   else:

       return nearest_le

_ = input()

a = [int(x) for x in input().split()]

a = [float("-Infinity")] + a + [float("+Infinity")]

for target in map(int, input().split()):

   print(nearest(a, target))

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота