skata9196
06.06.2020 21:20

Мишки Кеша и Тучка решили сделать на Лисичкин День рождения салют из n фейерверков. Они решили расставить фейерверки вдоль прямой с k различными лунками для фейерверков. В целях безопасности Кеша с Тучкой решили расставить фейерверки так, чтобы минимальное расстояние между ними было как можно больше. Однако для полной безопасности и этого недостаточно, так как если расстояние между двумя фейерверками меньше или равно 1, то они взрываются и могут поранить мишек. Вам нужно выяснить смогут ли Тучка с Кешей, соблюдая все правила безопасности, устроить салют из n фейерверков. Входные данные
Первая строка содержит два целых числа k (2≤k≤104) и n (2≤n≤k) — число лунок для фейерверков и число фейерверков.

Вторая строка содержит k натуральных чисел xi, расположенных по возрастанию, — координаты позиций (xi≤109).

Выходные данные
Если мишки не смогут устроить салют, выведите «NO» (без кавычек). Иначе в первой строке выведите «YES» (без кавычек), а во второй строке выведите одно целое число — наибольшее минимальное возможное допустимое расстояние между двумя фейерверками.

Система оценки
Максимальный за задачу: 100.

Примеры
входные данные
4 4
1 3 5 7
выходные данные
YES
2
входные данные
2 2
3 4
выходные данные
NO

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
026k
26.04.2022 03:34

--- Python 3.8.3 ---

n = int(input('n: \n'))

counter = 0

for coin1 in range(0, n+ 1):

   for coin2 in range(0, (n // 2) + 1):

       for coin5 in range(0, (n // 5) + 1):

           for coin10 in range(0, (n // 10) + 1):

               if coin1 * 1 + coin2 * 2 + coin5 * 5 + coin10 * 10 == n: counter += 1

print(counter)

для n в пределах 100-200 считает вроде правильно, и достаточно быстро. Что до больших значений n, мне не хватило терпения. Ненормально это, успеть попить чаю в ожидании конца работы программы в 8 строк.

При желании можно использовать как стресс-тест ЦПУ

0,0(0 оценок)
Ответ:
dzhmulin
22.07.2021 19:23

Вы допустили ошибку на строке 7:

for j in range(1, N):

   ...

Знакомая формулировка задачи, ЕГЭ-27. Вы пошли по пути наименьшего сопротивления, и решили перебрать все возможные пары элементов. Но в таком случае стоит учитывать, что для любого ряда входных данных, если x1 и x2 образуют пару, то эти же числа в обратном порядке учитывать не надо (При вашем переборе программа проверяла и пару x1-x2 и x2-x1, и считала их уникальными, что и приводило к ошибке)

Что бы перебрать все уникальные пары без повторений, вам следует немного изменить параметры вложенного for:

for i in range(N-1):

   for j in range(i, N):

       

Таким образом, вы точно так же учтете все возможные комбинации элементов, но сможете избежать повторений.

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