<?php function getBillsCountInMoneyAmount(int $moneyAmount, int $bill): int { $divisionRemain = $moneyAmount % $bill; if ($moneyAmount === $divisionRemain) { return 0; } return ($moneyAmount - $divisionRemain) / $bill; } function getDisposableBillsCount(int $bill, int $billsCount, array $billsInStock): int { $countInStock = 0; if (array_key_exists($bill, $billsInStock)) { $countInStock = $billsInStock[$bill]; } return min($billsCount, $countInStock); } function dispenseMoney(int $requestedMoney, array $billsInStock): array { $remainedToDispenseMoney = $requestedMoney; $result = []; foreach($billsInStock as $bill => $countInStock) { $billsCount = getBillsCountInMoneyAmount($remainedToDispenseMoney, $bill); $disposableBillsCount = getDisposableBillsCount($bill, $billsCount, $billsInStock); $result[$bill] = $disposableBillsCount; $remainedToDispenseMoney -= $disposableBillsCount * $bill; } if (0 < $remainedToDispenseMoney) { throw new Exception('Недостаточно купюр'); } return $result; } $billsInStock = [5000 => 3, 2000 => 4, 1000 => 10, 500 => 30, 200 => 10, 100 => 30]; $requestedMoney = 11600; var_dump(dispenseMoney($requestedMoney, $billsInStock));
You have javascript disabled. You will not be able to edit any code.