トピックリンク:http://acm.csust.edu.cn/problem/3022
説明
ワールドカップの最終段階は、プレーオフのシステムを用いて行われます。
この相は、残りのn個のチーム、1 カウントN。
いくつかのラウンドは、各ラウンドは、残りのランクは、注文IDでソートされています
この競争するため最初のチームと第二チーム、第三及び第四のチームのチーム、第五及び第六のチームのチームなど。
一人一人がチームの偶数を持っていることを確認します。次のラウンドに各ゲームの勝者は、敗者は、何のドローを排除していません。
最終ラウンドでは、唯一残っている2つのチームが:これは勝者がゲームを終了、優勝と呼ばれ、最終ラウンドと呼ばれています。
JCCは、決勝戦で彼のお気に入りの2つのチームを望んでいました。
残念ながら、チームのアイデンティティは、ケースチームが発生する可能性が決勝で会うことができないことが決定されていますが、JCC非常に豊富で、
あなたは、お金を使うことにより、2つのチームのいずれかの結果を決定することができますので、確認してA 、Bは、ゲームで満たしますが、ゲームシステムの問題、決勝で会ったことを保証することはできませんが、彼らが会うことができることを保証します。
AとBを出力する「ファイナル!」、私たちは決勝で会う場合の2つのチームが、どのくらい後にラウンドで満たすことができることが必要か、どのくらいの出力ラウンド5月の出会いの後にされています。
入力
唯一のラインは三つの整数が含まれている、N- A及びB(2 ≤ N- ≤ 2 5。6。1。≤ A 、B ≤ N-) -チーム、チーム関心JCCのIDの総数を表します。(!= B)
出力
場合は、チームとBチームが決勝で会うことができ、単一の行では「ファイナル!」を印刷します。
それ以外の場合は、表す整数印刷してくださいとbはどのように多くのラウンド後に会うことができます。
サンプル入力1
4 1 2
サンプル出力1
1
サンプル入力2
8 2 6
サンプル出力2
最後の!
すべてのゲームは、基本的なツリービューを持つことになります場合に、各ラウンドで唯一のチームでもあり、これは完全なバイナリツリーのと同等であるため、私たちはしばしばテレビを見ます。
我々リーフノードごとにレコード番号だけは、(iであると仮定)に示すように、次の新たなリーフノード数(すなわち、父親古いリーフノード)が(I + 1)/ 2です。
彼らは、親ノードが同じである場合に満たされ、そして各親ノードカウンタが1だけインクリメントされる時間を見つけるために、カウンタの最後の値を(Sという)-1最後の2あれば、また、ゲームフィールドの数、ツリーの深さSでありますチームの総数、そして決勝戦。
以下は、ACコードです:
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 INT POW(INT A、INT S) { int型 ANS = 1 。 以下のために(INT iが= 1 ; I <= Sであり; iは++ ) ANS * = 。 戻り値は、ANS; } int型のmain() { int型N、B。 scanf関数(" %D%D%D "、&N、&、&B)。 int型 S = 0 ; 一方、(!= B){ A=(+ 1)/ 2 。 B =(B + 1)/ 2 。 S ++ ; } 場合(N-POW(2、S)== 0)のprintf(" 最終\ N!" )。 他のprintf(" %d個\ N " 、S); リターン 0 ; }