fork download
  1. N = 1000
  2.  
  3. def method_name n
  4. w_coins = [1, 5, 10, 50, 100, 500]
  5.  
  6. return false if (n < 0) or (n > w_coins.inject(:+) * N)
  7. w_n = n
  8. w_ret = [0] * w_coins.size
  9. (w_coins.size - 1).downto(0) { |i|
  10. w_ret[i] = w_n / w_coins[i]
  11. w_n -= w_coins[i] * w_ret[i]
  12. if w_ret[i] > N
  13. w_n += w_coins[i] * (w_ret[i] - N)
  14. w_ret[i] = N
  15. end
  16. }
  17. w_ret
  18. end
  19.  
  20. [-1, 0, 1111, 666000, 666001].map{|e|
  21. w_ret = method_name e
  22. if w_ret
  23. p [e, w_ret.join(',')]
  24. else
  25. p [e, 'error']
  26. end
  27. }
  28.  
  29.  
Success #stdin #stdout 0.03s 9664KB
stdin
Standard input is empty
stdout
[-1, "error"]
[0, "0,0,0,0,0,0"]
[1111, "1,0,1,0,1,2"]
[666000, "1000,1000,1000,1000,1000,1000"]
[666001, "error"]