備忘録:2進法の問題(偽コラッツ、フィボナッチ)

注)以下の問題をコラッツ(奇数の場合は3倍して1を足すのがコラッツ)と勘違いした人がいたので、将来検索するために偽コラッツと書きましたが、コラッツとは関係ありません。

整数に対して,奇数ならばその数から1を引き,偶数ならばその数を2で割る,という操作を繰り返し,1になったら終了する.
516〜520の中で,10回で1となる整数の個数はいくつか?

に対して,

これは地道にやる以外に方法はないと気づくのが重要なんですね。

とか言ってる人がいて,それに対して正しく

これただのシフト演算と1引くだけの操作ですよ!

と突っ込んでいる人がいてわろた。ただのシフト演算と1引くだけの操作なので

10桁の2進数で先頭以外の1の個数が0個({}_9\mbox{C}_0=1 個),
9桁の2進数で先頭以外の1の個数が1個({}_8\mbox{C}_1=8 個),
8桁の2進数で先頭以外の1の個数が2個({}_7\mbox{C}_2=21 個),
7桁の2進数で先頭以外の1の個数が3個({}_6\mbox{C}_3=20 個),,
6桁の2進数で先頭以外の1の個数が4個({}_5\mbox{C}_4=5 個),

のものが10回で1となる整数となる(合計55個)。516〜520は9桁の2進数となることに着目すると
512+4=516,512+8=520
の2つのみが題意を満たす.

10回の操作で1となる整数は 1+8+21+20+5=55 個となるが,これって良く考えると,1桁減らすのに0の場合だと1回,1の場合だと2回で合計10回操作するということなので、
「10段の階段を1段または2段登って登りきる総数」
と一致することがわかり,これが \mbox{Fib}_{10}=55 と求まることがわかる.

このパスカルの三角形とフィボナッチ数列の関係である
{}_{n-1}\mbox{C}_0+{}_{n-2}\mbox{C}_1+{}_{n-2}\mbox{C}_2+{}_{\lceil \frac{n-1}{2}\rceil}\mbox{C}_{\lfloor \frac{n-1}{2}\rfloor}=\mbox{Fib}_n
は割りと有名な公式で,例えば

mathlog.info

などにある.

備忘録:円錐・円柱・平面のみで囲まれた立体の体積を一瞬で求める方法

mathlog.info

これは読むべき。ついでに球面の場合も球の中心を「良い点」とすれば良い

平面の場合は「任意の点」と平面の距離が高さ,
円柱面は「軸上の点」と円の半径が高さ,
円錐面の場合は「軸上の点」と母線までの距離が高さ,
球面の場合は「球の中心」と球の半径が高さ

とすれば

(錐体の体積)=\dfrac{1}{3}\times(面上の図形の面積)\times(高さ)

と統一的に視ることができるという話.

上記 web page とは方針が違うが,半径1の3円柱の交わりの体積 V は,その表面積を S とすると
V=\dfrac{1}{3}S
となり,円柱を平面で切ったときの側面積にサインカーブが登場することを利用すると
S=24\displaystyle\int_0^{\pi/4} 2\sin\theta\, d\theta=48-24\sqrt{2}
だから
V=16-8\sqrt{2}
となる.

いいね。

ちなみに,半径1の2円柱の交わりの体積 V は,その表面積を S とすると
V=\dfrac{1}{3}S
となり,円柱を平面で切ったときの側面積にサインカーブが登場することを利用すると
S=4\displaystyle\int_0^{\pi} 2\sin\theta\, d\theta=16
だから
V=\dfrac{16}{3}
となる.

おー。