У містичному селі Coinholt ми стоїмо за прилавком своєї пекарні й розкладаємо свіжу партію випічки. Двері зі скрипом відчиняються, і до пекарні заходить Denara, вправна торговка, яка добре знається на якісних товарах. Після швидкої трапези вона пересуває по прилавку сяйливу монету вартістю 100 одиниць.
Ми всміхаємося, беремо монету і дивимося на загальну вартість трапези: 88 одиниць. Отже, потрібно повернути решту на 12 одиниць.
Denara вичікувально простягає руку. «Дайте мені найменше монет», - каже вона з усмішкою. «Мій гаманець уже повний, і я не хочу ризикувати і загубити їх у дорозі.»
Ми знаємо, що варіантів є кілька. «На решту в нас є Lumis (вартістю 10 одиниць), Viras (вартістю 5 одиниць) і Zenth (вартістю 2 одиниці).»
Ми швидко подумки перебираємо можливі варіанти:
«Найкращий вибір - дві монети: один Lumis і один Zenth», - кажемо ми, віддаючи їй решту.
Denara всміхається, явно вражена. «Як завжди, усе правильно.»
Визначте найменшу кількість монет, яку потрібно видати покупцеві, щоб сума їхніх значень дорівнювала потрібній сумі решти.
| Регістр | Використання | Тип | Опис |
|---|---|---|---|
$a0 |
вхідні дані | ціле число | кількість вхідних монет |
$a1 |
вхідні дані | ціле число | цільова сума |
$a2 |
вхідні/вихідні дані | адреса | перезаписуваний масив слів із монетами |
$v0 |
вихідні дані | ціле число | кількість вихідних монет, -1, якщо вхідні дані некоректні |
$t0-9 |
тимчасовий | будь-який | використовується для тимчасового зберігання |
Зареєструйтеся на Exercism, щоб вивчати й опановувати MIPS Assembly, а також 70 вправ та справжнє наставництво від людей, і все це безкоштовно.