9
Stern-Brocotツリーで分数の位置を見つける
スターン- Brocotツリーは、各画分を上記のレベルでそれを隣接する2つの画分の分子と分母を添加することにより取得された画分の二分木です。 それは始まることによって生成される0/1と1/0そうように、一緒にこれらの画分の分子と分母を加えることによって分画の各連続対の間の1つの部分を配置することによって、反復、「エンドポイント画分」として、そこから: 0. 0/1 1/0 1. 0/1 1/1 1/0 2. 0/1 1/2 1/1 2/1 1/0 3. 0/1 1/3 1/2 2/3 1/1 3/2 2/1 3/1 1/0 4. 0/1 1/4 1/3 2/5 1/2 3/5 2/3 3/4 1/1 4/3 3/2 5/3 2/1 5/2 3/1 4/1 1/0 Stern-Brocotツリーの各反復(nth番目の反復)に2^n + 1は、シーケンス内の要素があり、そこから0/2^nに分数を割り当てることができ2^n/2^nます。新しい反復のたびに、連続する分数の各ペアの間に「中間」に1つの分数が挿入されます。 これにより、Stern-Brocotツリーは、正の有理数と0〜1の2進小数との間の1対1マッピングになり、2つのセットのカーディナリティが同じであるという証拠にもなります。 あなたの仕事は、最低項の正の有理数の分子と分母を与えられて、Stern-Brocotツリーにおけるその分数の位置に対応するバイナリ分数を決定するプログラムまたは関数を書くことです。 入力と出力の例を以下に示します。 …