No.253

基本的には二分探索だが, ロウソクが段々短くなる点を考慮に入れなくてはならない.

探索範囲の最小値 と最大値 を決めて, 以下を繰り返す.

  • のときは, で最大2回問い合わせすれば “等しい” が返ってくる.
  • 中間値 で問い合わせをする.
  • “等しい” が返ってきた場合は, が答えである.
  • より大きい” が返ってきた場合は, とする.
  • より小さい” が返ってきた場合は, とする.

ただし, 問い合わせの途中でロウソクが燃え尽きてしまうと, その後はいくら問い合わせをしても元の長さが分からなくなってしまう.

そこで, 最初は として問い合わせを行う. これならば の場合でも7回以内に特定できるので途中でロウソクが燃え尽きることはない.