fork(1) download
  1. <?php
  2.  
  3. $amout = 6600;
  4. $bills = array(
  5. 100 => 0,
  6. 200 => 3,
  7. 500 => 1,
  8. 1000 => 0,
  9. 2000 => 4,
  10. 5000 => 1
  11. );
  12.  
  13. $summBills = $bills[100] * 100 + $bills[200] * 200 + $bills[500] * 500 + $bills[1000] * 1000 + $bills[2000] * 2000 + $bills[5000] * 5000; //общее кол-во денег
  14. $str = "Выдача возможна, число купюр:\n";
  15. function checkBills ($bill, &$bills, &$amout, &$str) {
  16. if (floor($amout / $bill) >= $bills[$bill]) { //проверка, сколько можно выдать купюр и хватит ли их
  17. $str = $str . $bills[$bill] . "x{$bill} "; //если нет, то выдаются оставшиеся ну и обнуляется
  18. $amout = $amout - $bills[$bill] * $bill; //их количество
  19. $bills[$bill] = 0;
  20. }
  21. else {
  22. echo floor($amout / $bill) . "x{$bill} ";
  23. $str = $str . floor($amout / $bill) . "x{$bill} ";
  24. $amoutTemp = $amout - floor($amout / $bill) * $bill; //количество выданых
  25. $bills[$bill] = $bills[$bill] - floor($amout / $bill);
  26. $amout = $amoutTemp;
  27. }
  28. }
  29. //проверки всякие
  30. echo "Сумма: {$amout}\n";
  31. if ($amout <= 0) {echo "Введенная сума некоректна.";}
  32.  
  33. else if (($amout % 100) != 0) {
  34. echo "Выдача меньше купюр 100р не возможна, введите число кратное 100";
  35. }
  36.  
  37. else if ($amout > $summBills) {
  38. echo "Не хватает денег в банкомате, максимально возможная сумма выдачи {$summBills}";
  39. }
  40.  
  41. else {
  42. if (($amout >= 5000) && ($bills[5000] > 0)) {
  43. checkBills(5000, $bills, $amout, $str);
  44. }
  45. if (($amout >= 2000) && ($bills[2000] > 0)) {
  46. checkBills(2000, $bills, $amout, $str);
  47. }
  48. if ($amout >= 1000 && ($bills[1000] > 0)) {
  49. checkBills(1000, $bills, $amout, $str);
  50. }
  51. if ($amout >= 500 && ($bills[500] > 0)) {
  52. checkBills(500, $bills, $amout, $str);
  53. }
  54. if ($amout >= 200 && ($bills[200] > 0)) {
  55. checkBills(200, $bills, $amout, $str);
  56. }
  57. if ($amout >= 100 && ($bills[100] > 0)) {
  58. checkBills(100, $bills, $amout, $str);
  59. }
  60. }
  61. echo "{$str}";
  62. ?>
  63.  
Success #stdin #stdout 0.02s 24400KB
stdin
Standard input is empty
stdout
Сумма: 6600
Выдача возможна, число купюр:
1x5000 1x500 3x200