過去ログ

uchinyan
はい,こんにちは。さて,今回の問題は...
う〜む,結構考えてしまいました。こんな感じで。

(解法1)
状況を探るためにも,とにかく地道にやってみました。
各桁の数字が 1 〜 4 で和が 10 になるので,
まず,和が 10 になる 1 〜 4 のパターンを順序を無視して調べ,それらを一列に並べれば求める整数になります。
例えば,10 = 1 + 2 + 3 + 4 なので,パターンとしては 1 2 3 4,これを並べて 1234, 1243, 1324, ... などの 4! = 24 個,などです。
これを実行すると,次のようになります。「->」のあるのが意味のあるパターンで,「->」の右がそのパターンおける整数の個数です。
1 1 1 1 1 1 1 1 1 1 -> 10!/10! = 1
1 1 1 1 1 1 1 1 2 -> 9!/8! = 9
1 1 1 1 1 1 1 3 -> 8!/7! = 8
1 1 1 1 1 1 4 -> 7!/6! = 7
1 1 1 1 1 1 2 2 -> 8!/6!2! = 28
1 1 1 1 1 5
1 1 1 1 1 2 3 -> 7!/5! = 42
1 1 1 1 6
1 1 1 1 2 4 -> 6!/4! = 30
1 1 1 1 2 2 2 -> 7!/4!3! = 35
1 1 1 1 3 3 -> 6!/4!2! = 15
1 1 1 7
1 1 1 2 2 3 -> 6!/3!2! = 60
1 1 1 3 4 -> 5!/3! = 20
1 1 8
1 1 2 2 4 -> 5!/2!2! = 30
1 1 2 2 2 2 -> 6!/2!4! = 15
1 1 2 3 3 -> 5!/2!2! = 30
1 1 4 4 -> 4!/2!2! = 6
1 9
1 2 2 2 3 -> 5!/3! = 20
1 2 3 4 -> 4! = 24
1 3 3 3 -> 4!/3! = 4
2 8
2 2 2 4 -> 4!/3! = 4
2 2 2 2 2 -> 5!5! = 1
2 2 3 3 -> 4!/2!2! = 6
2 4 4 -> 3!/2! = 3
3 7
3 3 4 -> 3!/2! = 3
そこで,整数の総数は,「->」の右端の数を足せばいいので,
1 + 9 + 8 + 7 + 28 + 42 + 30 + 35 + 15 + 60 + 20 + 30 + 15 + 30 + 6 + 20 + 24 + 4 + 4 + 1 + 6 + 3 + 3 = 401 個
になります。

(解法2)
(解法1)の途中で気付いたのですが,
例えば,1 1 1 7 には,1 1 1 2 5 の中間パターンがありますが,5 は既に 2 3 とパターン分けされており,和が 5 の場合に還元されます。
他の場合も同様で,これは和に関して漸化式が作れることを意味しています。
そこで,和が n の場合を a(n) 個とすると,
a(1) は,明らかに 1 だけで,a(1) = 1 です。
a(2) は,2 = 1 + 1 = 2 より,
最上位桁の数字が 1 で残りの桁の数字の和が 1 の場合の a(1) と 2 自体で,
a(2) = a(1) + 1 = 1 + 1 = 2,です。
a(3) は,3 = 1 + 2 = 2 + 1 = 3 より,
最上位桁の数字が 1 で残りの桁の数字の和が 2 の場合,最上位桁の数字が 2 で残りの桁の数字の和が 1 の場合,3 自体で,
a(3) = a(2) + a(1) + 1 = 2 + 1 + 1 = 4,です。
a(4) は,4 = 1 + 3 = 2 + 2 = 3 + 1 = 4 より,
最上位桁の数字が 1 で残りの桁の数字の和が 3 の場合,最上位桁の数字が 2 で残りの桁の数字の和が 2 の場合,
最上位桁の数字が 3 で残りの桁の数字の和が 1 の場合,4 自体で,
a(4) = a(3) + a(2) + a(1) + 1 = 4 + 2 + 1 + 1 = 8,です。
n >= 5 の場合は,n = 1 + (n-1) = 2 + (n-2) = 3 + (n-3) = 4 + (n-4) より,
最上位桁の数字が 1 で残りの桁の数字の和が n-1 の場合,最上位桁の数字が 2 で残りの桁の数字の和が n-2 の場合,
最上位桁の数字が 3 で残りの桁の数字の和が n-3 の場合,最上位桁の数字が 4 で残りの桁の数字の和が n-4 の場合で,
a(n) = a(n-1) + a(n-2) + a(n-3) + a(n-4)
になります。この問題では,a(10) を求めるので,
a(5) = a(4) + a(3) + a(2) + a(1) = 8 + 4 + 2 + 1 = 15
a(6) = a(5) + a(4) + a(3) + a(2) = 15 + 8 + 4 + 2 = 29
a(7) = a(6) + a(5) + a(4) + a(3) = 29 + 15 + 8 + 4 = 56
a(8) = a(7) + a(6) + a(5) + a(4) = 56 + 29 + 15 + 8 = 108
a(9) = a(8) + a(7) + a(6) + a(5) = 108 + 56 + 29 + 15 = 208
a(10) = a(9) + a(8) + a(7) + a(6) = 208 + 108 + 56 + 29 = 401
そこで,401 個,になります。
なお,単に計算の便宜ですが,n >= 6 以上は,
a(n) = a(n-1) + a(n-2) + a(n-3) + a(n-4) = a(n-1) * 2 - a(n-5)
と変形して計算した方が楽かもしれませんね。
ネコの住む家   11月10日(木) 13:35:10     38563

過去問題一覧へ戻る