<?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;
	}	
}

?>