<?php
//массив с доступным кол-вом купюр и массив с подсчетом выданного количества купюр
$bills = array(5000 => 5, 2000 => 1, 1000 => 2, 500 => 2, 200 => 2, 100 => 1); $givenBillsCount = array(5000 => 0, 2000 => 0, 1000 => 0, 500 => 0, 200 => 0, 100 => 0);
$neededAmount = 29600; //хотим получить эту сумму
$givenAmount = 0; //выданная сумма
for ($i=0; $givenAmount < $neededAmount; $i++) {
$theRest = $neededAmount - $givenAmount; //сколько осталось выдать денег
//в зависимости от выполнения условий, выберется нужная доступная купюра
foreach ($bills as $value1 => $amount1) {
if ($neededAmount >= $value1 && $theRest >= $value1 && $bills[$value1] != 0) {
$availableBill = $value1;
$givenBillsCount[$value1]++;
break;
}elseif ($neededAmount < $value1 || $theRest < $value1 || $bills[$value1] == 0) { //обратное первому условию
'парам пам пам ничего не делаем';
} else { //в случае, если из доступных купюр не осталось ничего, а необходимая сумма все ещё не была выдана
echo "Сумма: {$neededAmount}\n";
echo "Выдача невозможна: в банкомате не хватает суммы ({$theRest}), попробуйте вывести сумму {$givenAmount} или меньше";
break;
}
}
$givenAmount += $availableBill; //прибавляем нашу купюру к сумме, которую мы уже выдали
$bills[$availableBill] = $bills[$availableBill] - 1; /*уменьшаем количество доступных
купюр выбранного номинала на 1*/
if ($neededAmount == $givenAmount) {
echo "Выдача возможна, количество купюр:\n"; //успех
foreach ($givenBillsCount as $value2 => $amount2) {
if ($givenBillsCount[$value2] == 0) { //удаляем все не понадобившиеся купюры из массива
unset($givenBillsCount[$value2]); } else {
echo "{$amount2}x{$value2} "; //отображаем только те купюры, которые нам понадобились
}
}
break;
}
}
?>
PD9waHAKLy/QvNCw0YHRgdC40LIg0YEg0LTQvtGB0YLRg9C/0L3Ri9C8INC60L7Quy3QstC+0Lwg0LrRg9C/0Y7RgCDQuCDQvNCw0YHRgdC40LIg0YEg0L/QvtC00YHRh9C10YLQvtC8INCy0YvQtNCw0L3QvdC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsCDQutGD0L/RjtGACiRiaWxscyA9IGFycmF5KDUwMDAgPT4gNSwgMjAwMCA9PiAxLCAxMDAwID0+IDIsIDUwMCA9PiAyLCAyMDAgPT4gMiwgMTAwID0+IDEpOwokZ2l2ZW5CaWxsc0NvdW50ID0gYXJyYXkoNTAwMCA9PiAwLCAyMDAwID0+IDAsIDEwMDAgPT4gMCwgNTAwID0+IDAsIDIwMCA9PiAwLCAxMDAgPT4gMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgokbmVlZGVkQW1vdW50ID0gMjk2MDA7IC8v0YXQvtGC0LjQvCDQv9C+0LvRg9GH0LjRgtGMINGN0YLRgyDRgdGD0LzQvNGDCiRnaXZlbkFtb3VudCA9IDA7IC8v0LLRi9C00LDQvdC90LDRjyDRgdGD0LzQvNCwCgpmb3IgKCRpPTA7ICRnaXZlbkFtb3VudCA8ICRuZWVkZWRBbW91bnQ7ICRpKyspIHsgCgoJJHRoZVJlc3QgPSAkbmVlZGVkQW1vdW50IC0gJGdpdmVuQW1vdW50OyAvL9GB0LrQvtC70YzQutC+INC+0YHRgtCw0LvQvtGB0Ywg0LLRi9C00LDRgtGMINC00LXQvdC10LMKCi8v0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINCy0YvQv9C+0LvQvdC10L3QuNGPINGD0YHQu9C+0LLQuNC5LCDQstGL0LHQtdGA0LXRgtGB0Y8g0L3Rg9C20L3QsNGPINC00L7RgdGC0YPQv9C90LDRjyDQutGD0L/RjtGA0LAKCWZvcmVhY2ggKCRiaWxscyBhcyAkdmFsdWUxID0+ICRhbW91bnQxKSB7CgkJaWYgKCRuZWVkZWRBbW91bnQgPj0gJHZhbHVlMSAmJiAkdGhlUmVzdCA+PSAkdmFsdWUxICYmICRiaWxsc1skdmFsdWUxXSAhPSAwKSB7CgkJICAgICRhdmFpbGFibGVCaWxsID0gJHZhbHVlMTsKCQkgICAgJGdpdmVuQmlsbHNDb3VudFskdmFsdWUxXSsrOwoJCSAgICBicmVhazsKCSAgICB9ZWxzZWlmICgkbmVlZGVkQW1vdW50IDwgJHZhbHVlMSB8fCAkdGhlUmVzdCA8ICR2YWx1ZTEgfHwgJGJpbGxzWyR2YWx1ZTFdID09IDApIHsgLy/QvtCx0YDQsNGC0L3QvtC1INC/0LXRgNCy0L7QvNGDINGD0YHQu9C+0LLQuNGOCgkgICAgCSfQv9Cw0YDQsNC8INC/0LDQvCDQv9Cw0Lwg0L3QuNGH0LXQs9C+INC90LUg0LTQtdC70LDQtdC8JzsKCSAgICB9IGVsc2UgeyAvL9CyINGB0LvRg9GH0LDQtSwg0LXRgdC70Lgg0LjQtyDQtNC+0YHRgtGD0L/QvdGL0YUg0LrRg9C/0Y7RgCDQvdC1INC+0YHRgtCw0LvQvtGB0Ywg0L3QuNGH0LXQs9C+LCDQsCDQvdC10L7QsdGF0L7QtNC40LzQsNGPINGB0YPQvNC80LAg0LLRgdC1INC10YnRkSDQvdC1INCx0YvQu9CwINCy0YvQtNCw0L3QsAoJCSAgICBlY2hvICLQodGD0LzQvNCwOiB7JG5lZWRlZEFtb3VudH1cbiI7CgkJICAgIGVjaG8gItCS0YvQtNCw0YfQsCDQvdC10LLQvtC30LzQvtC20L3QsDog0LIg0LHQsNC90LrQvtC80LDRgtC1INC90LUg0YXQstCw0YLQsNC10YIg0YHRg9C80LzRiyAoeyR0aGVSZXN0fSksINC/0L7Qv9GA0L7QsdGD0LnRgtC1INCy0YvQstC10YHRgtC4INGB0YPQvNC80YMgeyRnaXZlbkFtb3VudH0g0LjQu9C4INC80LXQvdGM0YjQtSI7CgkJICAgIGJyZWFrOyAKCSAgICB9Cgl9CgoJJGdpdmVuQW1vdW50ICs9ICRhdmFpbGFibGVCaWxsOyAvL9C/0YDQuNCx0LDQstC70Y/QtdC8INC90LDRiNGDINC60YPQv9GO0YDRgyDQuiDRgdGD0LzQvNC1LCDQutC+0YLQvtGA0YPRjiDQvNGLINGD0LbQtSDQstGL0LTQsNC70LgKCSRiaWxsc1skYXZhaWxhYmxlQmlsbF0gPSAkYmlsbHNbJGF2YWlsYWJsZUJpbGxdIC0gMTsgLyrRg9C80LXQvdGM0YjQsNC10Lwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LTQvtGB0YLRg9C/0L3Ri9GFIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0LrRg9C/0Y7RgCDQstGL0LHRgNCw0L3QvdC+0LPQviDQvdC+0LzQuNC90LDQu9CwINC90LAgMSovCglpZiAoJG5lZWRlZEFtb3VudCA9PSAkZ2l2ZW5BbW91bnQpIHsKCgkJZWNobyAi0JLRi9C00LDRh9CwINCy0L7Qt9C80L7QttC90LAsINC60L7Qu9C40YfQtdGB0YLQstC+INC60YPQv9GO0YA6XG4iOyAvL9GD0YHQv9C10YUKCgkJZm9yZWFjaCAoJGdpdmVuQmlsbHNDb3VudCBhcyAkdmFsdWUyID0+ICRhbW91bnQyKSB7CgkJCQoJCQlpZiAoJGdpdmVuQmlsbHNDb3VudFskdmFsdWUyXSA9PSAwKSB7IC8v0YPQtNCw0LvRj9C10Lwg0LLRgdC1INC90LUg0L/QvtC90LDQtNC+0LHQuNCy0YjQuNC10YHRjyDQutGD0L/RjtGA0Ysg0LjQtyDQvNCw0YHRgdC40LLQsAoJCQkJdW5zZXQoJGdpdmVuQmlsbHNDb3VudFskdmFsdWUyXSk7CgkJCX0gZWxzZSB7CgkJCQllY2hvICJ7JGFtb3VudDJ9eHskdmFsdWUyfSAiOyAvL9C+0YLQvtCx0YDQsNC20LDQtdC8INGC0L7Qu9GM0LrQviDRgtC1INC60YPQv9GO0YDRiywg0LrQvtGC0L7RgNGL0LUg0L3QsNC8INC/0L7QvdCw0LTQvtCx0LjQu9C40YHRjAoJCQl9CgkJfQoJCWJyZWFrOwoJfQkKfQoKPz4=