fork download
  1. <?php
  2.  
  3.  
  4. $amount = 6600;
  5.  
  6. $bills = array (
  7. 100 => 0,
  8. 200 => 3,
  9. 500 => 1,
  10. 2000 => 4,
  11. 5000 => 1
  12. );
  13.  
  14. echo "Сумма: $amount\n";
  15. //чек на первые ошибки
  16. $check100 = $amount % 100;
  17. if ($check100 != 0) {
  18. echo "Выдача невозможна: сумма не кратна 100";
  19. exit();
  20. } elseif ($amount <= 0) {
  21. echo "Выдача невозможна: сумма меньше или равна нулю";
  22. exit();
  23. }
  24. //функция для удобства
  25. function massCheck($bill, $much, $amount) {
  26. $cash = intval($amount/$bill);
  27. if ($cash <= $much) {
  28. return $cash;
  29. } elseif ($cash > $much) {
  30. return $much;
  31. }
  32. }
  33. //цикл для расчёта кол-ва купюр
  34. $onlyNumbers = [5000, 2000, 500, 200, 100];
  35. $count = count($onlyNumbers);
  36. $pusher = [];
  37. for ($i = 0; $i < $count; $i++) {
  38. $cash = massCheck($onlyNumbers[$i], $bills[$onlyNumbers[$i]], $amount);
  39. if ($amount == 0) {
  40. break;
  41. } elseif ($bills[$onlyNumbers[$i]] > 0){
  42. $cashCheck = $cash*$onlyNumbers[$i];
  43. $amount = $amount-$cashCheck;
  44. }
  45. if ($cash != 0) {
  46. array_push($pusher,$cash . "x$onlyNumbers[$i]");
  47. }
  48. }
  49.  
  50. if ($amount != 0) {
  51. echo "Выдача невозможна: в банкомате не хватает купюр";
  52. exit();
  53. }
  54. //клеим, выводим
  55. $res = implode(' ', $pusher);
  56. echo "Выдача возможна, число купюр:\n$res";
Success #stdin #stdout 0.02s 24360KB
stdin
Standard input is empty
stdout
Сумма: 6600
Выдача невозможна: в банкомате не хватает купюр