結果
| 問題 | No.253 ロウソクの長さ |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-08-20 15:32:49 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 50 ms / 2,000 ms |
| コード長 | 1,131 bytes |
| 記録 | |
| コンパイル時間 | 134 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 27,608 KB |
| 平均クエリ数 | 20.86 |
| 最終ジャッジ日時 | 2024-07-16 21:10:48 |
| 合計ジャッジ時間 | 3,717 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 36 |
ソースコード
#coding=UTF-8
#log_2 10^9=29.89だそうな
#100以上なら(わりかし)普通の二分探索でやるだけの話
#1 cmとかいうevilなのが無いのが救いか
#100未満の場合はあと9回で 楽勝でしょ
#ユキコちゃんとのやりとりのしかたはNo.246(URIは551)を参考に
import sys
ans=1
jogen=10**9
kagen=10
burnt=0
print('? 100')
sys.stdout.flush()
res = int(input())
if res==0:
kagen=100
jogen=100
elif res==1:
kagen=100+1
else:
jogen=100-1
burnt=burnt+1
while not (jogen-kagen<=1):
print ("? "+str((jogen+kagen)//2-burnt))
sys.stdout.flush()
res = int(input())
if res==0:
kagen=(jogen+kagen)//2
jogen=kagen
elif res==1:
kagen=(jogen+kagen)//2+1
else:
jogen=(jogen+kagen)//2-1
burnt=burnt+1
# print((jogen,kagen))
if jogen-kagen==1:
print("? "+str(jogen-burnt))
sys.stdout.flush()
res=int(input())
if res==0:
ans=jogen
else:
ans=kagen
else:
ans=jogen
print("! "+str(ans))
sys.stdout.flush()
#質問する数を変数に仕舞っておくと良かったかもしれない