タイトル説明
1
\ /
23
/ \ / \
4 5 6 7
/ \ / \ / \ / \
、上記正の整数1、2、3、...無限の二分木を構成するに示すように。一つのノードからルートへ(ノード番号が1である)、例えば5からルート・ノード・パス(5、2、1)、ルート・ノードからのパスに4として、固有の経路を有しています経路(1)となるよう(4、2、1)、ルートノードにルートノードからの経路は、唯一つのノード1を含んでいます。ルートノードへの経路を想定つのノードxとyは、(X1、X2、...、1であるため ) 及び(Y1、Y2、...、1 )、 2つの正の整数が存在しなければなりませんiとj、最初から、そこXI = YJ、XI + 1 =ようxiとYJ YJ + 1、XI + 2 = YJ + 2、...
質問は今、xとy与え、彼らの公共の要件親、すなわちXI(すなわち、YJ)。
\ /
23
/ \ / \
4 5 6 7
/ \ / \ / \ / \
、上記正の整数1、2、3、...無限の二分木を構成するに示すように。一つのノードからルートへ(ノード番号が1である)、例えば5からルート・ノード・パス(5、2、1)、ルート・ノードからのパスに4として、固有の経路を有しています経路(1)となるよう(4、2、1)、ルートノードにルートノードからの経路は、唯一つのノード1を含んでいます。ルートノードへの経路を想定つのノードxとyは、(X1、X2、...、1であるため ) 及び(Y1、Y2、...、1 )、 2つの正の整数が存在しなければなりませんiとj、最初から、そこXI = YJ、XI + 1 =ようxiとYJ YJ + 1、XI + 2 = YJ + 2、...
質問は今、xとy与え、彼らの公共の要件親、すなわちXI(すなわち、YJ)。
説明を入力します。
入力データは、複数組の、2つの正の整数xおよびy(1≤x、y≤2^ 31-1)を含むデータの各セットを含みます。
出力説明:
出力正の整数XI、即ちその第1の共通の親に対応するデータの各セット。
例1
エントリー
10 4
輸出
2
アルゴリズムのアイデア:
完全二分木との間の関数関係は、親ノードの子ノード
コードは以下の通りであります:
// ここにコードを書く壁紙CPP // 得られた子ノードX、X / 2の親ノード、比較決意結果:完全なバイナリの性質 の#include <iostreamの> 使用して名前空間; STD INT のmain() { int型、X、Y、 しばらく(CIN >> X Y) { ながら(= X!Y) { / * IF(X> Y) X / = 2; 他{ Y / 2 =; }オプティマイザ* / X > Y X = X? / 2:Y = Y / 2 ; } coutの<< X << ENDL。 } 戻り 0 。 }
テスト結果: