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

В магазине продается печенье в ящиках по 15 кг,
17 кг, 21 кг. Как купить ровно 185 кг печеньи, не
вскрывая ящики? Сколькими способами можно это
сделать? PYTHON python

Ответы

Ответ дал: slonce70
0

def find_combinations(total_weight: int, box_weights: list):

   result = []

   for x in range(total_weight // box_weights[0] + 1):

       for y in range(total_weight // box_weights[1] + 1):

           for z in range(total_weight // box_weights[2] + 1):

               if box_weights[0] * x + box_weights[1] * y + box_weights[2] * z == total_weight:

                   result.append((x, y, z))

   return result

box_weights = [15, 17, 21]

total_weight = 185

combinations = find_combinations(total_weight, box_weights)

print(f'Всего {len(combinations)} способов купить {total_weight} кг печенья:')

for combination in combinations:

   print(f'{box_weights[0]} кг x {combination[0]}, {box_weights[1]} кг x {combination[1]}, {box_weights[2]} кг x {combination[2]}')

Можно сделать по другому и проще используя библиотеку itertools

from itertools import product

box_weights = [15, 17, 21]

total_weight = 185

combinations = [combination for combination in product(range(total_weight // box_weights[0] + 1), range(total_weight // box_weights[1] + 1), range(total_weight // box_weights[2] + 1)) if sum([box_weights[i] * combination[i] for i in range(len(box_weights))]) == total_weight]

print(f'Всего {len(combinations)} способов купить {total_weight} кг печенья:')

for combination in combinations:

   print(f'{box_weights[0]} кг x {combination[0]}, {box_weights[1]} кг x {combination[1]}, {box_weights[2]} кг x {combination[2]}')

Приложения:
Вас заинтересует