fork(5) download
  1. <?php
  2. function array_kshift(&$bills)
  3. {
  4. list($k) = array_keys($bills);
  5. $r = array(
  6. $k => $bills[$k]
  7. );
  8. unset($bills[$k]);
  9. return $r;
  10. }
  11. function f($x, $mi)
  12. {
  13. $sum = 0;
  14. $amount = 6600;
  15. $bills = array(
  16. 100 => 23,
  17. 200 => 3,
  18. 500 => 1,
  19. 1000 => 0,
  20. 2000 => 4,
  21. 5000 => 1
  22. );
  23. krsort($bills);
  24.  
  25. if ($x == 1) {
  26. $cut = array_kshift($bills);
  27. } elseif ($x == 2) {
  28. $cut = array_kshift($bills);
  29. $cut2 = array_kshift($bills);
  30. }
  31.  
  32. foreach ($bills as $nominal => $number) {
  33.  
  34. $quantity = floor($amount / $nominal);
  35. if ($number >= $quantity) {
  36. $amount = $amount - ($quantity * $nominal);
  37. $delivery = $quantity;
  38. $sum = $sum + $delivery;
  39. } else {
  40. $amount = $amount - ($number * $nominal);
  41. $delivery = $number;
  42. $sum = $sum + $delivery;
  43. }
  44. $x = 'x';
  45. if ($mi == 1) {
  46. echo "$delivery$x$nominal ";
  47. if (($nominal == 100) && ($amount != 0)) {
  48. echo "Выдача невозможна";
  49. }
  50. if (($nominal == 100) && ($amount == 0)) {
  51. echo "Выдача возможна";
  52. }
  53. }
  54. }
  55. return $sum;
  56. }
  57.  
  58. $a = f(0, 0);
  59. $b = f(1, 0);
  60. $c = f(2, 0);
  61. $min = min($a, $b, $c);
  62.  
  63. if ($min == $b) {
  64. $b = f(1, 1);
  65. } elseif ($min == $a) {
  66. $a = f(0, 1);
  67. } elseif ($min == $c) {
  68. $c = f(2, 1);
  69. }
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
3x2000  0x1000  1x500  0x200  1x100  Выдача возможна