fork download
  1. <?php
  2. $amount = 4100;
  3. $rest = $amount;
  4. /*запас наличных*/
  5. $bills = array(
  6. 100 => 20,
  7. 500 => 1,
  8. 1000 => 4,
  9. 5000 => 11
  10. );
  11. $n=count($bills)-1;
  12. $b=range(0, $n);
  13. $comb=array_combine($b, $bills);
  14. $i=0;
  15. foreach($bills as $key=> $value){
  16. $bills2[$i]=$key;
  17. ++$i;
  18. }
  19.  
  20. $text="";
  21.  
  22.  
  23. for ($i = $n; $i >= 0; --$i) {
  24. if($comb[$i]==0){
  25. continue;
  26. }
  27. $money = floor($rest / $bills2[$i]);
  28. if ($money > $comb[$i]) {
  29. $money = $comb[$i];
  30. }
  31. $rest = $rest - ($money * $bills2[$i]);
  32.  
  33. $text = $text . $money . " X " . $bills2[$i] . "\t";
  34. }
  35.  
  36. if ($rest == 0) {
  37. echo "сумма $amount \n выдано купюр: " . $text;
  38. } else {
  39. echo "выдача невозможна";
  40. }
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
сумма 4100 
 выдано купюр: 0 X 5000	4 X 1000	0 X 500	1 X 100