結果
| 問題 |
No.2848 Birthday Hit and Blow
|
| コンテスト | |
| ユーザー |
shobonvip
|
| 提出日時 | 2024-08-23 22:47:38 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,182 bytes |
| コンパイル時間 | 190 ms |
| コンパイル使用メモリ | 82,436 KB |
| 実行使用メモリ | 112,268 KB |
| 平均クエリ数 | 2.00 |
| 最終ジャッジ日時 | 2024-08-23 22:47:43 |
| 合計ジャッジ時間 | 4,620 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | TLE * 1 |
ソースコード
# いい質問をして絞り込む
import random
def valid(t):
for i in range(4):
for j in range(i+1,4):
if t[i] == t[j]: return False
return True
a = [31,29,31,30,31,30,31,31,30,31,30,31]
s = []
for i in range(12):
for j in range(1,a[i]+1):
t = f"{str(i+1).zfill(2)}{str(j).zfill(2)}"
if valid(t):
s.append(t)
T = int(input())
for _ in range(T):
nokori = s[::]
while len(nokori) > 1:
g = 10 ** 18
v = [[] for i in range(25)]
tt = ""
for _ in range(10000):
i = random.randrange(10000)
t = str(i).zfill(4)
if not valid(t): continue
tar = [0] * 10
for i in range(4):
tar[int(t[i])] += 1
bunpu = [[] for i in range(25)]
for x in nokori:
hit = 0
blow = 0
for j in range(4):
if x[j] == t[j]:
hit += 1
if tar[int(x[j])]:
blow += 1
blow -= hit
#if x == "0823" and t == "4156":
# print(hit, blow)
bunpu[hit*5+blow].append(x)
cmp = max([len(bunpu[y]) for y in range(25)])
if cmp < g:
g = cmp
v = bunpu[::]
tt = t
#print(cmp)
print(f"? {tt}")
h,b = map(int,input().split())
#print(v[h*5+b])
nokori = v[h*5+b][::]
print(f"! {nokori[0]}")
a = int(input())
shobonvip