結果
| 問題 |
No.2357 Guess the Function
|
| コンテスト | |
| ユーザー |
navel_tos
|
| 提出日時 | 2023-06-23 21:55:35 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,687 bytes |
| コンパイル時間 | 233 ms |
| コンパイル使用メモリ | 82,284 KB |
| 実行使用メモリ | 76,888 KB |
| 平均クエリ数 | 2.82 |
| 最終ジャッジ日時 | 2024-07-01 01:32:07 |
| 合計ジャッジ時間 | 1,957 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 7 WA * 3 |
ソースコード
#yukicoder394A
'''
xを選ぶ。x+A % B を訊ねる。
中国剰余定理に持ち込みたいが、さてどうする。
x=0 とすればAが割れないか?そんなことないか。x=1でよさそうか。
0が返ってきた場合、A+1=B が保障される。えー 詰みか?
わからないのでバカ全探索しておく。
'''
'''
■全探索: x=50 のときにうまくいくらしい
for x in range(1,101): #1個目の質問
C=[set() for _ in range(101)] #質問xの余りごとに分類
for A in range(1,100):
for B in range(A+1,101):
C[(x+A)%B].add((A,B))
#2個目の質問を行う 分類ごとに質問を変えて良い
for St in C:
for y in range(1,101):
if x==y: continue
Z=set(); hantei=1
for now in St:
A,B=now
t=(y+A)%B
if t in Z: hantei=0
else: Z.add(t)
if not hantei: continue
else: break
else: break
else: print(x); break
'''
#x=50 のときの分類を行う
C=[set() for _ in range(101)]; x=50
for A in range(1,100):
for B in range(A+1,101):
C[(50+A)%B].add((A,B))
#余りごとに対応を考える
print('?',50)
N=int(input()); Candidate=C[N]
if len(Candidate)==1: A,B=Candidate.pop(); print('!',A,B); exit()
#残り候補から絞り込みを行う
for y in range(1,101):
Z=set()
for A,B in Candidate:
Z.add((y+A)%B)
if len(Z)!=len(Candidate): continue
else: break
print('?',y); M=int(input())
#候補を全探索し、余りがMになるものを探す
for A,B in Candidate:
if (y+A)%B==M: print('!',A,B); exit()
navel_tos