fork download
  1. <?php
  2.  
  3. $money=54700;
  4. echo "Сумма: $money рублей\n";
  5.  
  6. $result = cnt($money);
  7. switch ($result) {
  8. case -1:
  9. echo "Выдача невозможна: введено отрицательное значение";
  10. break;
  11. case -2:
  12. echo "Выдача невозможна: введено неверное значение";
  13. break;
  14. case -3:
  15. echo "Выдача невозможна: в банкомате недостаточно денег";
  16. break;
  17. default:
  18. echo "Выдача возможна, число купюр:\n$result[1]x5000 $result[2]x1000 $result[3]x500 $result[4]x100";
  19. }
  20.  
  21.  
  22. function cnt($money) {
  23. $bills=array(
  24. 1 => 23,
  25. 2 => 4,
  26. 3 => 9,
  27. 4 => 200);
  28.  
  29. #подсчитываем имеющееся количество
  30. $moneyHave=(
  31. $bills[1]*100 +
  32. $bills[2]*500 +
  33. $bills[3]*1000 +
  34. $bills[4]*5000);
  35.  
  36. #обработчик ошибок
  37. if ($money<0) {return -1;}
  38. if ($money % 100 != 0) {return -2;}
  39. if ($money>$moneyHave) {return -3;}
  40.  
  41. $moneyPaid=0; //деньги, которые потрачено
  42. $money2=$money; //переменная для счета
  43. $uses=array(0,0,0,0,0);
  44. for ($i=1;$moneyPaid<$money;$i++) {
  45. if (($money2>5000)&&($bills[1]>0)) {
  46. $moneyPaid+=5000;
  47. $money2-=5000;
  48. $bills[1]--;
  49. $uses[1]++;
  50. }
  51. elseif (($money>1000)&&($bills[2]>0)) {
  52. $moneyPaid+=1000;
  53. $money2-=1000;
  54. $bills[2]--;
  55. $uses[2]++;
  56. }
  57. elseif (($money>500)&&($bills[3]>0)) {
  58. $moneyPaid+=500;
  59. $money2-=500;
  60. $bills[3]--;
  61. $uses[3]++;
  62. }
  63. elseif (($money>=100)&&($bills[4]>0)) {
  64. $moneyPaid+=100;
  65. $money2-=100;
  66. $bills[4]--;
  67. $uses[4]++;
  68. }
  69. }
  70.  
  71. return $uses;
  72. }
  73.  
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
Сумма: 54700 рублей
Выдача возможна, число купюр:
10x5000 4x1000 2x500 0x100