「どうしても解けなかった数学の練習問題」の編集履歴(バックアップ)一覧はこちら
どうしても解けなかった数学の練習問題 - (2013/05/22 (水) 12:04:58) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
数学の勉強で昔こんな問題に挑戦したことがあります。
堀江 伸一
3*3*10^10000段のブロックタワーを2*1*1のブロックで構成したとき何通りの組み立て方があるか。
答えは答えを10億7だったかそんな数で割った余りを答えよという問題。
10億段とか1兆段とかそういうちいさな段数でなく10001桁段です。
とりあえず楽しいパズルと考え何も調べ物をせず自力で考えたコードを要約すると以下の通り。
上下に出っ張りのはみでた可能な一段全てを用意し、それを二セット作り全組み合わせで2段を作ります。
2段を二つ組み合わせて4段を作り、4段を組み合わせて8段を作ります。
これを10^10000段の直前まで作り。
10^10000段を2進数になおしたときあるn桁目に1のビットが立ってたら、2^n段を作れた時にそれをどんどんアセンブリしていけば答えが出ます。
細部は覚えてませんが大体この方法で6時間半パソコンに計算させて答えが出ました。
アセンブルするときに上面の凸凹が512通り位、下面の凸凹が512通り、真中の凸凹は結合部の上面が決まれば結合部下面の形が決まるので512通り。
一つ結合するときに512*512*512、必要な段数は10^10000=2^37000くらいなのでこの結合を37000回する必要があります。
512*512*512*37000回の計算です。
実際は上面と下面に制約があるのでもうすこし計算量が落ちると思いますし、当時コードを書いたときは試行錯誤の残るもう少し非効率で多少無駄も入ったコードも書いていた覚えもあります。
数時間かかったのは仕方ないような気もするのですが。
正しいコードを書くと、30秒で答えが出るそうなのでもっと高度な発想が必要なようです。
ちなみに私は創価学会の方から小学校の足し算と掛け算を何とかできるレベルの人間だとという悪いうわさを流されていますが。
本物の堀江伸一はこういう問題を趣味で解いている人間だったりします。
数学の勉強で昔こんな問題に挑戦したことがあります。
堀江 伸一
3*3*10^10000段のブロックタワーを2*1*1のブロックで構成したとき何通りの組み立て方があるか。
答えは答えを10億7だったかそんな数で割った余りを答えよという問題。
10億段とか1000兆段とかそういうちいさな段数でなく10001桁段です。
とりあえず楽しいパズルと考え何も調べ物をせず自力で考えたコードを要約すると以下の通り。
上下に出っ張りのはみでた可能な一段全てを用意し、それを二セット作り全組み合わせで2段を作ります。
2段を二つ組み合わせて4段を作り、4段を組み合わせて8段を作ります。
これを10^10000段の直前まで作りつづけます。
10^10000段を2進数になおしたときあるn桁目に1のビットが立ってたら、2^n段を作れた時にそれをどんどんアセンブリして積み重ねていけば答えが出ます
細部は覚えてませんが大体この方法で6時間半パソコンに計算させて正しい答えが出ました。
アセンブルするときに上面の凸凹が512通り位、下面の凸凹が512通り、真中の凸凹は結合部の上面が決まれば結合部下面の形が決まるので512通り。
一つ結合するときに512*512*512、必要な段数は10^10000=2^37000くらいなのでこの結合を37000回する必要があります。
512*512*512*37000回の計算です。
実際は上面と下面に制約があるのでもうすこし計算量が落ちると思いますし、当時コードを書いたときは試行錯誤の残るもう少し非効率で多少無駄も入ったコードも書いていた覚えもあります。
計算に6時間半かかったのは仕方ないような気もするのですが。
正しいコードを書くと、30秒で答えが出るそうなのでもっと高度な発想が必要なようです。
幾ら正しい答えが出るからって計算に6時間半もかかっては不正解となったものでした。
ちなみに私は創価学会の方から小学校の足し算と掛け算を何とかできるレベルの人間だとという悪いうわさを流されていますが。
本物の堀江伸一はこういう問題を趣味で解いている人間だったりします。