<?php
error_reporting(-1);
mb_internal_encoding('utf-8');
function array_kshift(&$bills)
{
    list($k) = array_keys($bills);
    $r = array(
        $k => $bills[$k]
    );
    unset($bills[$k]);
    return $r;
}
function f($x, $mi)
{
    $sum    = 0;
    $amount = 6600;
    $bills  = array(
        100 => 23,
        200 => 3,
        500 => 1,
        1000 => 0,
        2000 => 4,
        5000 => 1
    );
    krsort($bills);
    
    if ($x == 1) {
        $cut = array_kshift($bills);
    } elseif ($x == 2) {
        $cut  = array_kshift($bills);
        $cut2 = array_kshift($bills);
    }
    
    foreach ($bills as $nominal => $number) {
        
        $quantity = floor($amount / $nominal);
        if ($number >= $quantity) {
            $amount   = $amount - ($quantity * $nominal);
            $delivery = $quantity;
            $sum      = $sum + $delivery;
        } else {
            $amount   = $amount - ($number * $nominal);
            $delivery = $number;
            $sum      = $sum + $delivery;
        }
        $x = 'x';
        if ($mi == 1) {
            echo "$delivery$x$nominal  ";
            if (($nominal == 100) && ($amount != 0)) {
                echo "Выдача невозможна";
            }
            if (($nominal == 100) && ($amount == 0)) {
                echo "Выдача возможна";
            }
        }
    }
    return $sum;
}

$a   = f(0, 0);
$b   = f(1, 0);
$c   = f(2, 0);
$min = min($a, $b, $c);

if ($min == $b) {
    $b = f(1, 1);
} elseif ($min == $a) {
    $a = f(0, 1);
} elseif ($min == $c) {
    $c = f(2, 1);
}