結果
| 問題 |
No.253 ロウソクの長さ
|
| コンテスト | |
| ユーザー |
jitomesky
|
| 提出日時 | 2015-08-01 18:18:14 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,155 bytes |
| コンパイル時間 | 137 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 28,120 KB |
| 平均クエリ数 | 18.83 |
| 最終ジャッジ日時 | 2024-07-16 05:34:20 |
| 合計ジャッジ時間 | 7,065 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 8 RE * 28 |
ソースコード
import sys
import math
def question(num):
print("? %d" % num)
sys.stdout.flush()
n = int(input())
return n
def result(num):
print("! %d" % num)
sys.stdout.flush()
def first_step(i, max_num, min_num):
judge = int(max_num / 2)
for i in range(i, 29):
r = question(judge)
if r == 1:
# higer
min_num = judge
elif r == -1:
# low
max_num = judge
else:
return 1000, (judge+i)
max_num -= 1
min_num -= 1
judge = int((max_num - min_num) / 2) + min_num
return i, min_num
def second_step(i, judge):
for i in range(i, 100 - i):
print(i)
r = question(judge)
if r == 0:
break
return i
# main
max_num = 1e9
judge = int(max_num / 2)
min_num = 10
# less than 100?
r = question(100)
max_num -= 1
min_num -= 1
if r == -1:
r = second_step(1, min_num)
elif r == 1:
min_num = 100 - 1
i, min_num = first_step(1, max_num, min_num)
if i > 100:
r = min_num
else:
r = second_step(i, min_num)
else:
r = 100
# 答えを出力
result(r)
jitomesky