fork download
  1. m2a = ->m {
  2. c = [[[0]]]
  3. (1..m).each_with_object([]) {|s, a|
  4. (1..s).each {|w|
  5. (1..[s, 5].min).each {|hd|
  6. c[s - hd][w - 1]&.each {|tl|
  7. b = 10 ** (w - 1) * hd + tl
  8. (a[s] ||= [nil]) << b
  9. ((c[s] ||= [])[w] ||= []) << b
  10. }
  11. }
  12. }
  13. }
  14. }
  15. a = m2a.(20)
  16. g = ->m, n {puts "(#{m},#{n}) → #{a[m][n] || 0}"}
  17. g.(2,1)
  18. g.(2,2)
  19. g.(2,3)
  20. g.(20,1)
  21. g.(20,2)
  22. g.(20,3)
  23. g.(20,400096)
  24. g.(20,400097)
  25. #g.(32,1)
  26. #g.(32,2)
  27. #g.(32,3)
  28. #g.(32,1000)
  29. #g.(32,1000000)
  30. #g.(32,1000000000)
  31. #g.(32,1333610936)
  32. #g.(32,1333610937)
  33.  
Success #stdin #stdout 0.16s 21172KB
stdin
Standard input is empty
stdout
(2,1) → 2
(2,2) → 11
(2,3) → 0
(20,1) → 5555
(20,2) → 14555
(20,3) → 15455
(20,400096) → 11111111111111111111
(20,400097) → 0