<?php
header('Content-Type: text/plain; charset=UTF-8');
$amount = 987800;
5000 => 120,
2000 => 64,
1000 => 360,
500 => 1500,
200 => 230,
100 => 350
);
/* Считаем количество денег в банкомате */
function getBillSum($bills)
{
$BillSum = '';
foreach ($bills as $billValue => $billAmount) {
$BillSum += $billValue * $billAmount;
}
return $BillSum;
}
/* Проверяем возможность выдачи */
function checkPaymentPossibility($amount, $bills)
{
$error = '';
$billSum = getBillSum($bills);
if ($billSum < $amount) {
$error = "в банкомате недостаточно купюр";
}
if ($amount <= 0) {
$error = "сумма должна быть больше нуля";
}
if (($amount % 100) != 0) {
$error = "сумма должна быть кратна ста";
}
return "Выдача невозможна: $error";
}
return TRUE;
}
function giveCash($amount, $bills)
{
$result = '';
foreach ($bills as $billValue => $billAmount) {
$billPaymentAmount = floor($amount / $billValue);
if ($billPaymentAmount > $billAmount) {
$billPaymentAmount = $billAmount;
}
$amount -= $billPaymentAmount * $billValue;
$result .= "{$billPaymentAmount}x{$billValue} ";
}
return $result;
}
function processATMRequest ($amount, $bills)
{
$result = '';
$errors = checkPaymentPossibility($amount, $bills);
if ($errors !== TRUE) {
return $errors;
}
$cash = giveCash($amount, $bills);
$result .= "Сумма: $amount\n";
$result .= "Выдача возможна, число купюр: $cash\n";
return $result;
}
echo processATMRequest($amount, $bills);
PD9waHAKCmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Jyk7CgokYW1vdW50ID0gOTg3ODAwOwoKJGJpbGxzID0gYXJyYXkoCiAgICA1MDAwICAgID0+IDEyMCwKICAgIDIwMDAgICAgPT4gNjQsCiAgICAxMDAwICAgID0+IDM2MCwKICAgIDUwMCAgICAgPT4gMTUwMCwKICAgIDIwMCAgICAgPT4gMjMwLAogICAgMTAwICAgICA9PiAzNTAKKTsKCi8qINCh0YfQuNGC0LDQtdC8INC60L7Qu9C40YfQtdGB0YLQstC+INC00LXQvdC10LMg0LIg0LHQsNC90LrQvtC80LDRgtC1ICovCmZ1bmN0aW9uIGdldEJpbGxTdW0oJGJpbGxzKQp7CiAgICAkQmlsbFN1bSA9ICcnOwoKICAgIGZvcmVhY2ggKCRiaWxscyBhcyAkYmlsbFZhbHVlID0+ICRiaWxsQW1vdW50KSB7CiAgICAgICAgJEJpbGxTdW0gKz0gJGJpbGxWYWx1ZSAqICRiaWxsQW1vdW50OwogICAgfQoKICAgIHJldHVybiAkQmlsbFN1bTsKfQoKLyog0J/RgNC+0LLQtdGA0Y/QtdC8INCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LLRi9C00LDRh9C4ICovCmZ1bmN0aW9uIGNoZWNrUGF5bWVudFBvc3NpYmlsaXR5KCRhbW91bnQsICRiaWxscykKewogICAgJGVycm9yID0gJyc7CgogICAgJGJpbGxTdW0gPSBnZXRCaWxsU3VtKCRiaWxscyk7CgogICAgaWYgKCRiaWxsU3VtIDwgJGFtb3VudCkgewogICAgICAgICRlcnJvciA9ICLQsiDQsdCw0L3QutC+0LzQsNGC0LUg0L3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC60YPQv9GO0YAiOwogICAgfQoKICAgIGlmICgkYW1vdW50IDw9IDApIHsKICAgICAgICAkZXJyb3IgPSAi0YHRg9C80LzQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0LHQvtC70YzRiNC1INC90YPQu9GPIjsKICAgIH0KCiAgICBpZiAoKCRhbW91bnQgJSAxMDApICE9IDApIHsKICAgICAgICAkZXJyb3IgPSAi0YHRg9C80LzQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0LrRgNCw0YLQvdCwINGB0YLQsCI7CiAgICB9CgogICAgaWYgKCFlbXB0eSgkZXJyb3IpKSB7CiAgICAgICAgcmV0dXJuICLQktGL0LTQsNGH0LAg0L3QtdCy0L7Qt9C80L7QttC90LA6ICRlcnJvciI7CiAgICB9CgogICAgcmV0dXJuIFRSVUU7Cn0KCmZ1bmN0aW9uIGdpdmVDYXNoKCRhbW91bnQsICRiaWxscykKewogICAgJHJlc3VsdCA9ICcnOwoKICAgIGZvcmVhY2ggKCRiaWxscyBhcyAkYmlsbFZhbHVlID0+ICRiaWxsQW1vdW50KSB7CiAgICAgICAgJGJpbGxQYXltZW50QW1vdW50ID0gZmxvb3IoJGFtb3VudCAvICRiaWxsVmFsdWUpOwoKICAgICAgICBpZiAoJGJpbGxQYXltZW50QW1vdW50ID4gJGJpbGxBbW91bnQpIHsKICAgICAgICAgICAgJGJpbGxQYXltZW50QW1vdW50ID0gJGJpbGxBbW91bnQ7CiAgICAgICAgfQoKICAgICAgICAkYW1vdW50IC09ICRiaWxsUGF5bWVudEFtb3VudCAqICRiaWxsVmFsdWU7CgogICAgICAgICRyZXN1bHQgLj0gInskYmlsbFBheW1lbnRBbW91bnR9eHskYmlsbFZhbHVlfSAiOwogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CgpmdW5jdGlvbiBwcm9jZXNzQVRNUmVxdWVzdCAoJGFtb3VudCwgJGJpbGxzKQp7CiAgICAkcmVzdWx0ID0gJyc7CgogICAgJGVycm9ycyA9IGNoZWNrUGF5bWVudFBvc3NpYmlsaXR5KCRhbW91bnQsICRiaWxscyk7CgogICAgaWYgKCRlcnJvcnMgIT09IFRSVUUpIHsKICAgICAgICByZXR1cm4gJGVycm9yczsKICAgIH0KCiAgICAkY2FzaCA9IGdpdmVDYXNoKCRhbW91bnQsICRiaWxscyk7CgogICAgJHJlc3VsdCAuPSAi0KHRg9C80LzQsDogJGFtb3VudFxuIjsKICAgICRyZXN1bHQgLj0gItCS0YvQtNCw0YfQsCDQstC+0LfQvNC+0LbQvdCwLCDRh9C40YHQu9C+INC60YPQv9GO0YA6ICRjYXNoXG4iOwoKICAgIHJldHVybiAkcmVzdWx0OwoKfQoKZWNobyBwcm9jZXNzQVRNUmVxdWVzdCgkYW1vdW50LCAkYmlsbHMpOw==