fork(1) download
  1. <?php
  2.  
  3.  
  4. /* Требуемая сумма */
  5. $amount = 54500;
  6.  
  7. /* Запас наличных */
  8. $bills = array(
  9. 100 => 23,
  10. 500 => 5,
  11. 1000 => 0,
  12. 5000 => 200
  13. );
  14.  
  15. $err = "Выдача невозможна: ";
  16.  
  17. echo "Сумма: {$amount}\n";
  18. if($amount<0){
  19. exit($err."сумма меньше нуля.");
  20. }
  21. if(is_float($amount/100)){
  22. exit($err."сумма не кратна 100.");
  23. }
  24.  
  25. foreach(array_reverse($bills,true) as $key => $value) {
  26. $count = floor($amount/$key);
  27. if($value>0 && $amount>0){
  28. if($count>$value)$count=$value;
  29. $result[$key]=$count;
  30. $amount=$amount-$key*$count;
  31. }else{
  32. continue;
  33. }
  34. }
  35. if($amount>0)exit($err."в бакномате недостаточно купюр.");
  36.  
  37. echo "Выдача возможна, число купюр:\n";
  38. foreach($result as $key => $value){
  39. echo "{$key}x$value ";
  40. }
  41.  
Success #stdin #stdout 0.02s 24400KB
stdin
Standard input is empty
stdout
Сумма: 54500
Выдача возможна, число купюр:
5000x10 500x5 100x20