結果
問題 | 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 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 72 ms
76,384 KB |
testcase_01 | WA | - |
testcase_02 | AC | 66 ms
76,760 KB |
testcase_03 | AC | 67 ms
76,248 KB |
testcase_04 | AC | 65 ms
75,864 KB |
testcase_05 | WA | - |
testcase_06 | AC | 68 ms
76,888 KB |
testcase_07 | AC | 67 ms
76,504 KB |
testcase_08 | WA | - |
testcase_09 | AC | 68 ms
76,632 KB |
testcase_10 | AC | 66 ms
75,608 KB |
ソースコード
#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()