<?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;
//в зависимости от выполнения условий, выберется нужная доступная купюра
if ($neededAmount >= 5000 && $theRest >= 5000 && $bills[5000] != 0) {
$availableBill = 5000;
$givenBillsCount[5000]++;
} elseif ($neededAmount >= 2000 && $theRest >= 2000 && $bills[2000] != 0) {
$availableBill = 2000;
$givenBillsCount[2000]++;
} elseif ($neededAmount >= 1000 && $theRest >= 1000 && $bills[1000] != 0) {
$availableBill = 1000;
$givenBillsCount[1000]++;
} elseif ($neededAmount >= 500 && $theRest >= 500 && $bills[500] != 0) {
$availableBill = 500;
$givenBillsCount[500]++;
} elseif ($neededAmount >= 200 && $theRest >= 200 && $bills[200] != 0) {
$availableBill = 200;
$givenBillsCount[200]++;
} elseif ($neededAmount >= 100 && $theRest >= 100 && $bills[100] != 0) {
$availableBill = 100;
$givenBillsCount[100]++;
} else { //в случае, если из доступных купюр не осталось ничего, а необходимая сумма все ещё не была выдана
echo "Сумма: {$neededAmount}\n";
echo "Выдача невозможна: в банкомате не хватает суммы ({$theRest}), попробуйте вывести сумму {$givenAmount} или меньше";
break;
}
$givenAmount += $availableBill; //прибавляем нашу купюру к сумме, которую мы уже выдали
$bills[$availableBill] = $bills[$availableBill] - 1; /*уменьшаем количество доступных
купюр выбранного номинала на 1*/
if ($neededAmount == $givenAmount) {
echo "Выдача возможна, количество купюр:\n"; //успех
foreach ($givenBillsCount as $value => $amount) {
if ($givenBillsCount[$value] == 0) {
unset($givenBillsCount[$value]); } else {
echo "{$amount}x{$value} ";
}
}
break;
}
}
?>
PD9waHAKLy/QvNCw0YHRgdC40LIg0YEg0LTQvtGB0YLRg9C/0L3Ri9C8INC60L7Quy3QstC+0Lwg0LrRg9C/0Y7RgCDQuCDQvNCw0YHRgdC40LIg0YEg0L/QvtC00YHRh9C10YLQvtC8INCy0YvQtNCw0L3QvdC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsCDQutGD0L/RjtGACiRiaWxscyA9IGFycmF5KDUwMDAgPT4gNSwgMjAwMCA9PiAxLCAxMDAwID0+IDIsIDUwMCA9PiAyLCAyMDAgPT4gMiwgMTAwID0+IDEpOwokZ2l2ZW5CaWxsc0NvdW50ID0gYXJyYXkoNTAwMCA9PiAwLCAyMDAwID0+IDAsIDEwMDAgPT4gMCwgNTAwID0+IDAsIDIwMCA9PiAwLCAxMDAgPT4gMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgokbmVlZGVkQW1vdW50ID0gMjk2MDA7IC8v0YXQvtGC0LjQvCDQv9C+0LvRg9GH0LjRgtGMINGN0YLRgyDRgdGD0LzQvNGDCiRnaXZlbkFtb3VudCA9IDA7IC8v0LLRi9C00LDQvdC90LDRjyDRgdGD0LzQvNCwCgpmb3IgKCRpPTA7ICRnaXZlbkFtb3VudCA8ICRuZWVkZWRBbW91bnQ7ICRpKyspIHsgCgoJJHRoZVJlc3QgPSAkbmVlZGVkQW1vdW50IC0gJGdpdmVuQW1vdW50OwovL9CyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQstGL0L/QvtC70L3QtdC90LjRjyDRg9GB0LvQvtCy0LjQuSwg0LLRi9Cx0LXRgNC10YLRgdGPINC90YPQttC90LDRjyDQtNC+0YHRgtGD0L/QvdCw0Y8g0LrRg9C/0Y7RgNCwCglpZiAoJG5lZWRlZEFtb3VudCA+PSA1MDAwICYmICR0aGVSZXN0ID49IDUwMDAgJiYgJGJpbGxzWzUwMDBdICE9IDApIHsKCQkkYXZhaWxhYmxlQmlsbCA9IDUwMDA7CgkJJGdpdmVuQmlsbHNDb3VudFs1MDAwXSsrOwoJfSBlbHNlaWYgKCRuZWVkZWRBbW91bnQgPj0gMjAwMCAmJiAkdGhlUmVzdCA+PSAyMDAwICYmICRiaWxsc1syMDAwXSAhPSAwKSB7CgkJJGF2YWlsYWJsZUJpbGwgPSAyMDAwOwoJCSRnaXZlbkJpbGxzQ291bnRbMjAwMF0rKzsKCX0gZWxzZWlmICgkbmVlZGVkQW1vdW50ID49IDEwMDAgJiYgJHRoZVJlc3QgPj0gMTAwMCAmJiAkYmlsbHNbMTAwMF0gIT0gMCkgeyAgICAgIAoJCSRhdmFpbGFibGVCaWxsID0gMTAwMDsKCQkkZ2l2ZW5CaWxsc0NvdW50WzEwMDBdKys7Cgl9IGVsc2VpZiAoJG5lZWRlZEFtb3VudCA+PSA1MDAgJiYgJHRoZVJlc3QgPj0gNTAwICYmICRiaWxsc1s1MDBdICE9IDApIHsKCQkkYXZhaWxhYmxlQmlsbCA9IDUwMDsKCQkkZ2l2ZW5CaWxsc0NvdW50WzUwMF0rKzsKCX0gZWxzZWlmICgkbmVlZGVkQW1vdW50ID49IDIwMCAmJiAkdGhlUmVzdCA+PSAyMDAgJiYgJGJpbGxzWzIwMF0gIT0gMCkgewoJCSRhdmFpbGFibGVCaWxsID0gMjAwOwoJCSRnaXZlbkJpbGxzQ291bnRbMjAwXSsrOwoJfSBlbHNlaWYgKCRuZWVkZWRBbW91bnQgPj0gMTAwICYmICR0aGVSZXN0ID49IDEwMCAmJiAkYmlsbHNbMTAwXSAhPSAwKSB7CgkJJGF2YWlsYWJsZUJpbGwgPSAxMDA7CgkJJGdpdmVuQmlsbHNDb3VudFsxMDBdKys7Cgl9IGVsc2UgeyAvL9CyINGB0LvRg9GH0LDQtSwg0LXRgdC70Lgg0LjQtyDQtNC+0YHRgtGD0L/QvdGL0YUg0LrRg9C/0Y7RgCDQvdC1INC+0YHRgtCw0LvQvtGB0Ywg0L3QuNGH0LXQs9C+LCDQsCDQvdC10L7QsdGF0L7QtNC40LzQsNGPINGB0YPQvNC80LAg0LLRgdC1INC10YnRkSDQvdC1INCx0YvQu9CwINCy0YvQtNCw0L3QsAoJCWVjaG8gItCh0YPQvNC80LA6IHskbmVlZGVkQW1vdW50fVxuIjsKCQllY2hvICLQktGL0LTQsNGH0LAg0L3QtdCy0L7Qt9C80L7QttC90LA6INCyINCx0LDQvdC60L7QvNCw0YLQtSDQvdC1INGF0LLQsNGC0LDQtdGCINGB0YPQvNC80YsgKHskdGhlUmVzdH0pLCDQv9C+0L/RgNC+0LHRg9C50YLQtSDQstGL0LLQtdGB0YLQuCDRgdGD0LzQvNGDIHskZ2l2ZW5BbW91bnR9INC40LvQuCDQvNC10L3RjNGI0LUiOwoJCWJyZWFrOyAKCX0KCgkkZ2l2ZW5BbW91bnQgKz0gJGF2YWlsYWJsZUJpbGw7IC8v0L/RgNC40LHQsNCy0LvRj9C10Lwg0L3QsNGI0YMg0LrRg9C/0Y7RgNGDINC6INGB0YPQvNC80LUsINC60L7RgtC+0YDRg9GOINC80Ysg0YPQttC1INCy0YvQtNCw0LvQuAoJJGJpbGxzWyRhdmFpbGFibGVCaWxsXSA9ICRiaWxsc1skYXZhaWxhYmxlQmlsbF0gLSAxOyAvKtGD0LzQtdC90YzRiNCw0LXQvCDQutC+0LvQuNGH0LXRgdGC0LLQviDQtNC+0YHRgtGD0L/QvdGL0YUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQutGD0L/RjtGAINCy0YvQsdGA0LDQvdC90L7Qs9C+INC90L7QvNC40L3QsNC70LAg0L3QsCAxKi8KCWlmICgkbmVlZGVkQW1vdW50ID09ICRnaXZlbkFtb3VudCkgewoKCQllY2hvICLQktGL0LTQsNGH0LAg0LLQvtC30LzQvtC20L3QsCwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LrRg9C/0Y7RgDpcbiI7IC8v0YPRgdC/0LXRhQoKCQlmb3JlYWNoICgkZ2l2ZW5CaWxsc0NvdW50IGFzICR2YWx1ZSA9PiAkYW1vdW50KSB7CgkJCQoJCQlpZiAoJGdpdmVuQmlsbHNDb3VudFskdmFsdWVdID09IDApIHsKCQkJCXVuc2V0KCRnaXZlbkJpbGxzQ291bnRbJHZhbHVlXSk7CgkJCX0gZWxzZSB7CgkJCQllY2hvICJ7JGFtb3VudH14eyR2YWx1ZX0gIjsgCgkJCX0KCQl9CgkJYnJlYWs7Cgl9CQp9Cgo/Pg==