<?php
error_reporting(-1);
mb_internal_encoding('UTF-8');
$amount = 54500;
$totalCash = 0;
$bills = array(
5000 => 200,
1000 => 0,
500 => 5,
100 => 23
);
foreach ($bills as $faceValue => $totalNumberOfBills) {
$totalCash += $faceValue * $totalNumberOfBills;
}
echo "Сумма: {$amount}\n";
if ($amount > $totalCash) {
echo "Выдача невозможна: В банкомате отсутствует требуемая сумма.\n";
} elseif ($amount % 100 != 0) {
echo "Выдача невозможна: Запрошена неверная сумма (сумма должна быть кратна 100 рублям).\n";
} elseif ($amount <= 0) {
echo "Выдача невозможна: Запрошена сумма меньше или равна нуля.\n";
} else {
foreach ($bills as $faceValue => $totalNumberOfBills) {
/* Кол-во купюр каждого номинала исходя из запрашиваемой суммы */
$numberOfBills = floor($amount / $faceValue);
/* Проверка наличия требуемого количества купюр в АТМ */
if ($numberOfBills > $totalNumberOfBills) {
$numberOfBills = $totalNumberOfBills;
}
/* Вычитаем сумму нужных купюр и сохраняем кол-во нужных купюр в отдельный массив */
$amount -= $numberOfBills * $faceValue;
$result[] = $numberOfBills;
}
/* Если в итоге сумма не станет равной нулю, значить в АТМ нет купюр нужного номинала */
if ($amount != 0) {
echo "Выдача невозможна: В банкомате отсутствуют купюры нужного номинала.";
} else {
/* Если сумма равна 0, то АТМ выдает нужную сумму */
echo "Выдача возможна, число купюр:\n";
$result = array_combine($result, array_flip($bills));
foreach ($result as $key => $value) {
if ($key != 0) {
echo "{$key}x{$value} ";
}
}
}
}
- Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.6 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- Сумма: 54500
Выдача возможна, число купюр:
10x5000 5x500 20x100
preferences:
146.88 ms | 403 KiB | 166 Q