2015年6月20日土曜日

150620(2)

Ruby


i (1以上9以下)を含むならば、i が i 個含む数の個数について(2)

条件を満たすd桁のものの個数を出力してみる。
なお、10進法の場合については
オンライン整数列大辞典のA127007に載っている。

def factorial(m)
  (1..m).inject(:*)
end

def c(d, ary)
  factorial(d) / ary.map{|m| factorial(m)}.inject(:*)
end

N = 10
(2..N).each{|n|
  h = {}
  (1..n - 1).each{|i|
    # i個の文字を使用
    (1..n - 1).to_a.combination(i){|ary|
      d = ary.inject(:+)
      h.key?(d) ? h[d] = h[d].push(ary) : h[d] = [ary]
    }
  }
  s = 0
  (1..n * (n - 1) / 2).each{|d|
    t = 0
    h[d].each{|ary|
      td = c(d, ary)
      s += td
      t += td
    }
    p t
  }
  # 条件をみたす数の個数
  p [n, s]
}

出力結果
1
[2, 1]
1
1
3
[3, 5]
1
1
4
4
10
60
[4, 80]
1
1
4
5
15
75
140
280
1260
12600
[5, 14381]
1
1
4
5
16
81
161
504
1890
16380
34650
110880
360360
2522520
37837800
[6, 40885253]
1
1
4
5
16
82
168
532
2226
17430
42042
185724
636636
4036032
47297250
131171040
428828400
2058376320
9777287520
97772875200
2053230379200
[7, 2163451135829]
1
1
4
5
16
82
169
540
2262
17910
43692
198396
777348
4612608
50720670
156636480
767807040
3396320928
19135548432
147124897920
2522540180160
8066262204000
32157498653280
148419224553600
989461497024000
6431499730656000
86825246363856000
2431106898187968000
[8, 2525544441942679544]
1
1
4
5
16
82
169
541
2271
17955
44352
200871
797940
4858854
51808185
163586280
822796260
4180026708
22437877176
172116842040
2680722724680
9541235864160
57026553243660
263620813135680
1819902396312000
11737487008447200
129307599049028400
2888386529037609600
10827108221572843200
47211227710346700000
253681663563596268000
1561117929622130880000
13737837780674751744000
116771621135735389824000
2043503369875369321920000
73566121315513295589120000
[9, 75742010013818779294524291]
1
1
4
5
16
82
169
541
2272
17965
44407
201751
801515
4890886
52218595
165519640
835947970
4290442728
24096524166
179566203960
2739764737710
9938147178960
60997160143920
331360222255920
2154105076695000
14308355062630200
148898652724750500
3043362702904524000
12550859255187653400
85564729840752162000
446033694177751680000
3160644316242901488000
23904928042959835872000
212227787619709557696000
2872257514324824658032000
85739562818913709978272000
359325740171513750386752000
1764944667656072549494848000
10004773552120178696264400000
69366429961366572294099840000
546927620849236435395787200000
6125589353511448076432816640000
65850085550248066821652778880000
1448701882105457470076361135360000
65191584694745586153436251091200000
[10, 66712890763701234740813164553708284]

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。