#author("2021-10-23T13:15:09+00:00","","")
*[[Problem 115:http://projecteuler.net/problem=115]] 「ブロックの組み合わせ方の数え上げ その2」 [#u6c77b64]

注意: これは [[Problem 114]] をより難しくした問題である.

長さ n ユニットからなる 1 列上に, 最低 m ユニットの長さを持つ赤ブロックが置かれている. ただしどの赤ブロック同士も, 少なくとも 1 ユニットの黒い正方形が間にある(赤ブロックは長さが異なってもよい).
長さ &tex{n}; ユニットからなる 1 列上に, 最低 &tex{m}; ユニットの長さを持つ赤ブロックが置かれている. ただしどの赤ブロック同士も, 少なくとも 1 ユニットの黒い正方形が間にある(赤ブロックは長さが異なってもよい).

敷き詰め計数関数 F(m, n) は 1 列に敷き詰める方法が何通りかを表すとする.
敷き詰め計数関数 F(&tex{m};, &tex{n};) は 1 列に敷き詰める方法が何通りかを表すとする.

例えば, F(3, 29) = 673135 であり, F(3, 30) = 1089155 である.

m = 3 の時, n = 30 がこの敷き詰め計数関数が初めて 1,000,000 を超える最小の値であることがわかる.
&tex{m}; = 3 の時, &tex{n}; = 30 がこの敷き詰め計数関数が初めて 1,000,000 を超える最小の値であることがわかる.

同様に, m = 10 では F(10, 56) = 880711, F(10, 57) = 1148904 であることがわかり, つまり n = 57 がこの敷き詰め計数関数が初めて 1,000,000 を超える最小の値であることがわかる.
同様に, &tex{m}; = 10 では F(10, 56) = 880711, F(10, 57) = 1148904 であることがわかり, つまり &tex{n}; = 57 がこの敷き詰め計数関数が初めて 1,000,000 を超える最小の値であることがわかる.

m = 50 のとき, この敷き詰め計数関数が初めて 1,000,000 を超える最小の n の値を求めよ.
&tex{m}; = 50 のとき, この敷き詰め計数関数が初めて 1,000,000 を超える最小の &tex{n}; の値を求めよ.

IP:123.254.2.216 TIME:"2021-10-23 (土) 22:15:09" REFERER:"http://odz.sakura.ne.jp/projecteuler/index.php" USER_AGENT:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:93.0) Gecko/20100101 Firefox/93.0"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS