<?php
header('Content-Type: text/plain; charset=UTF-8');
$amount = 238800;
5000 => 50,
1000 => 100,
500 => 100,
100 => 100
);
/* Считаем количество денег в банкомате */
function getBillSum($bills)
{
$BillSum = '';
foreach ($bills as $billValue => $billAmount) {
$BillSum += $billValue * $billAmount;
}
return $BillSum;
}
/* Проверяем возможность выдачи */
function checkPaymentPossibility($amount, $billSum)
{
$error = '';
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 = '';
$billSum = getBillSum($bills);
$errors = checkPaymentPossibility($amount, $billSum);
if ($errors !== TRUE) {
return $errors;
}
$cash = giveCash($amount, $bills);
$result .= "Сумма: $amount\n";
$result .= "Выдача возможна, число купюр: $cash\n";
return $result;
}
echo processATMRequest($amount, $bills);
PD9waHAKCmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Jyk7CgokYW1vdW50ID0gMjM4ODAwOwoKJGJpbGxzID0gYXJyYXkoCiAgICA1MDAwICAgID0+IDUwLAogICAgMTAwMCAgICA9PiAxMDAsCiAgICA1MDAgICAgID0+IDEwMCwKICAgIDEwMCAgICAgPT4gMTAwCik7CgovKiDQodGH0LjRgtCw0LXQvCDQutC+0LvQuNGH0LXRgdGC0LLQviDQtNC10L3QtdCzINCyINCx0LDQvdC60L7QvNCw0YLQtSAqLwpmdW5jdGlvbiBnZXRCaWxsU3VtKCRiaWxscykKewogICAgJEJpbGxTdW0gPSAnJzsKCiAgICBmb3JlYWNoICgkYmlsbHMgYXMgJGJpbGxWYWx1ZSA9PiAkYmlsbEFtb3VudCkgewogICAgICAgICRCaWxsU3VtICs9ICRiaWxsVmFsdWUgKiAkYmlsbEFtb3VudDsKICAgIH0KCiAgICByZXR1cm4gJEJpbGxTdW07Cn0KCi8qINCf0YDQvtCy0LXRgNGP0LXQvCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINCy0YvQtNCw0YfQuCAqLwpmdW5jdGlvbiBjaGVja1BheW1lbnRQb3NzaWJpbGl0eSgkYW1vdW50LCAkYmlsbFN1bSkKewogICAgJGVycm9yID0gJyc7CgogICAgaWYgKCRiaWxsU3VtIDwgJGFtb3VudCkgewogICAgICAgICRlcnJvciA9ICLQsiDQsdCw0L3QutC+0LzQsNGC0LUg0L3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC60YPQv9GO0YAiOwogICAgfQoKICAgIGlmICgkYW1vdW50IDw9IDApIHsKICAgICAgICAkZXJyb3IgPSAi0YHRg9C80LzQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0LHQvtC70YzRiNC1INC90YPQu9GPIjsKICAgIH0KCiAgICBpZiAoKCRhbW91bnQgJSAxMDApICE9IDApIHsKICAgICAgICAkZXJyb3IgPSAi0YHRg9C80LzQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0LrRgNCw0YLQvdCwINGB0YLQsCI7CiAgICB9CgogICAgaWYgKCFlbXB0eSgkZXJyb3IpKSB7CiAgICAgICAgcmV0dXJuICLQktGL0LTQsNGH0LAg0L3QtdCy0L7Qt9C80L7QttC90LA6ICRlcnJvciI7CiAgICB9CgogICAgcmV0dXJuIFRSVUU7Cn0KCmZ1bmN0aW9uIGdpdmVDYXNoKCRhbW91bnQsICRiaWxscykKewogICAgJHJlc3VsdCA9ICcnOwoKICAgIGZvcmVhY2ggKCRiaWxscyBhcyAkYmlsbFZhbHVlID0+ICRiaWxsQW1vdW50KSB7CiAgICAgICAgJGJpbGxQYXltZW50QW1vdW50ID0gZmxvb3IoJGFtb3VudCAvICRiaWxsVmFsdWUpOwoKICAgICAgICBpZiAoJGJpbGxQYXltZW50QW1vdW50ID4gJGJpbGxBbW91bnQpIHsKICAgICAgICAgICAgJGJpbGxQYXltZW50QW1vdW50ID0gJGJpbGxBbW91bnQ7CiAgICAgICAgfQoKICAgICAgICAkYW1vdW50IC09ICRiaWxsUGF5bWVudEFtb3VudCAqICRiaWxsVmFsdWU7CgogICAgICAgICRyZXN1bHQgLj0gInskYmlsbFBheW1lbnRBbW91bnR9eHskYmlsbFZhbHVlfSAiOwogICAgfQoKICAgIHJldHVybiAiJHJlc3VsdCI7Cn0KCmZ1bmN0aW9uIHByb2Nlc3NBVE1SZXF1ZXN0ICgkYW1vdW50LCAkYmlsbHMpCnsKICAgICRyZXN1bHQgPSAnJzsKICAgICRiaWxsU3VtID0gZ2V0QmlsbFN1bSgkYmlsbHMpOwoKICAgICRlcnJvcnMgPSBjaGVja1BheW1lbnRQb3NzaWJpbGl0eSgkYW1vdW50LCAkYmlsbFN1bSk7CgogICAgaWYgKCRlcnJvcnMgIT09IFRSVUUpIHsKICAgICAgICByZXR1cm4gJGVycm9yczsKICAgIH0KCiAgICAkY2FzaCA9IGdpdmVDYXNoKCRhbW91bnQsICRiaWxscyk7CgogICAgJHJlc3VsdCAuPSAi0KHRg9C80LzQsDogJGFtb3VudFxuIjsKICAgICRyZXN1bHQgLj0gItCS0YvQtNCw0YfQsCDQstC+0LfQvNC+0LbQvdCwLCDRh9C40YHQu9C+INC60YPQv9GO0YA6ICRjYXNoXG4iOwoKICAgIHJldHVybiAkcmVzdWx0OwoKfQoKZWNobyBwcm9jZXNzQVRNUmVxdWVzdCgkYW1vdW50LCAkYmlsbHMpOw==