• Предмет: Информатика
  • Автор: likeetiktokplankton
  • Вопрос задан 5 месяцев назад

Заказ в магазине
Ограничение по времени: 0.5 секунды

Решив запастись ручками на весь новый учебный год, Игорь подсчитал, что ему нужно M ручек. В его любимом интернет‑магазине есть удобная функция — он может сразу добавить в заказ упаковку из любого числа ручек от 1 до N. Правда, оказалось, что нельзя добавить в заказ две упаковки одного размера. Например, если Игорю нужно купить M=12 ручек, а максимальное число ручек в упаковке N=10, то Игорь может добавить в заказ упаковку из 7 ручек и упаковку из 5 ручек, но не сможет добавить две упаковки из 6 ручек.
Сформируйте заказ на M ручек, используя минимальное число различных упаковок.

Формат входных данных
Первая строка входных данных содержит число N — максимальный размер одной упаковки (1≤N≤109).
Вторая строка входных данных содержит целое число M — необходимое количество ручек в заказе (1≤M≤109).

Формат выходных данных
Программа должна вывести одно или несколько чисел от 1 до N — размеры выбранных упаковок в любом порядке. Есть имеется несколько возможных решений, то выведите любое из них. Если решения не существует, необходимо вывести одно число 0.

Система оценки
Решения, правильно работающие при N≤30, будут оцениваться в 30 баллов.
Решения, правильно работающие при N≤105, будут оцениваться в 50 баллов.

Приложения:

Ответы

Ответ дал: magisterobivan
9

Ответ:

n = int(input())

m = int(input())

if n > m:

  n = m

L = 0

R = n + 2

while R - L > 1:

  mid = (L + R) // 2

  if (mid + n) * (n - mid + 1) // 2 >= m:

     L = mid

  else:

     R = mid

if (L + n) * (n - L + 1) // 2 < m:

  print(0)

else:

  for i in range(R, n + 1):

     print(i)

  s = (R + n) * (n - R + 1) // 2

  if m - s > 0:

     print(m - s)

Объяснение:


Dghens: Какой язык?
magisterobivan: питон
Ответ дал: Dghens
1

Ответ:

хз

Объяснение:n = int(input())m = int(input())if n > m:  n = mL = 0R = n + 2while R - L > 1:  mid = (L + R) // 2  if (mid + n) * (n - mid + 1) // 2 >= m:     L = mid  else:     R = midif (L + n) * (n - L + 1) // 2 < m:  print(0)else:  for i in range(R, n + 1):     print(i)  s = (R + n) * (n - R + 1) // 2  if m - s > 0:     print(m - s

Вас заинтересует