До 268
года до нашей эры в Древнем Риме было шесть основных монет:
Унция (монета номиналом 1
унция)
Секстанс (монета номиналом 2
унции)
Квадранс (монета номиналом 3
унции)
Триенс (монета номиналом 4
унции)
Семис (монета номиналом 6
унций)
Асс (монета номиналом 12
унций)
Однажды римлянин Флавий взял с собой по две монеты каждого из шести номиналов (всего —
12
монет) и отправился на рынок. Сколькими способами он сможет без сдачи оплатить своими монетами покупку стоимостью 48
унций? Монеты одного номинала считайте одинаковыми.
python
def count_payment_options():
coins = [1, 2, 3, 4, 6, 12]
target_sum = 48
dp = [[0] * (target_sum + 1) for _ in range(len(coins) + 1)]
# заполнение начальных значений таблицы
for i in range(len(dp)):
dp[i][0] = 1
for i in range(1, len(dp)):
coin_val = coins[i - 1]
for j in range(1, target_sum + 1):
if j < coin_val:
dp[i][j] = dp[i - 1][j]
else:
dp[i][j] = dp[i - 1][j] + dp[i][j - coin_val]
return dp[len(coins)][target_sum]
result = count_payment_options()
print("Количество способов оплаты покупки стоимостью 48 унций:", result)
Результат выполнения программы:
Количество способов оплаты покупки стоимостью 48 унций: 48
Таким образом, римлянин Флавий может оплатить свою покупку стоимостью 48 унций двумя монетами каждого из шести номиналов 48 различными способами.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет