Номер §5.3 № 10

ГДЗ по информатике 8 класс, Босова 2023, страница 232

§. № Выдача сдачи банкнотами

Запишите на языке Python программу, реализующую алгоритм работы кассира, выдающего покупателю сдачу (s) наименьшим возможным количеством банкнот по 500 (k500), 200 (k200), 100 (k100) и 50 (k50) рублей. Предусмотрите вывод сообщения о том, что часть сдачи, которую невозможно выдать купюрами, будет выдана монетами. Для проверки правильности программы используйте тест: входные данные 845; выходные данные: «Следует сдать: банкнот по 500 руб. — 1 шт.; банкнот по 200 руб. — 1 шт.; банкнот по 100 руб. — 1 шт.; банкнот по 50 руб. — 0 шт.; монетами — 45 руб.»

Решение

Банкноты , , и руб. кратны . Сначала выдаём максимально возможное число самых крупных банкнот: это даёт наименьшее число банкнот для данной суммы. После каждой выдачи остаток находим оператором %, а число банкнот — оператором //.

s = int(input('Сумма сдачи: '))
k = s // 
s = s % 
k = s // 
s = s % 
k = s // 
s = s % 
k = s // 
s = s % 
print('Следует сдать:')
print('банкнот по  руб. -', k, 'шт.')
print('банкнот по  руб. -', k, 'шт.')
print('банкнот по  руб. -', k, 'шт.')
print('банкнот по  руб. -', k, 'шт.')
print('монетами -', s, 'руб.')

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

Ответ

При s = : k = , k = , k = , k = ; монетами — руб.

Помогло?

Нет твоего задания?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото