結果
問題 | No.2848 Birthday Hit and Blow |
ユーザー |
👑 |
提出日時 | 2024-08-23 23:09:08 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,078 ms / 2,000 ms |
コード長 | 1,541 bytes |
コンパイル時間 | 258 ms |
コンパイル使用メモリ | 82,068 KB |
実行使用メモリ | 97,700 KB |
平均クエリ数 | 442.50 |
最終ジャッジ日時 | 2024-08-23 23:09:11 |
合計ジャッジ時間 | 2,641 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 1 |
ソースコード
from datetime import date, timedeltaimport itertoolsmemo = {}def Q(lst):if tuple(lst) in memo:return memo[tuple(lst)]n = len(lst)ma = 1 << 30res = ""for P in itertools.permutations(range(10), 4):S = "".join(map(str, P))cnt = {}for row in lst:a = 0b = 0for i in range(4):if row[i] == S[i]:a += 1elif row[i] in S:b += 1cnt[(a, b)] = cnt.get((a, b), 0) + 1if max(cnt.values()) < ma:ma = max(cnt.values())res = Sif max(cnt.values()) == 1 or max(cnt.values()) * 5 <= n:breakmemo[tuple(lst)] = resreturn resdef solve():lst = []s = date(2024, 1, 1)lst = []while s.year == 2024:T = s.strftime("%m%d")if len(set(T)) == 4:lst.append(T)s += timedelta(days=1)for _ in range(6):q = Q(lst)print("?", q)aa, bb = map(int, input().split())nex = []for row in lst:a = 0b = 0for i in range(4):if row[i] == q[i]:a += 1elif row[i] in q:b += 1if a == aa and b == bb:nex.append(row)lst = nexif len(lst) == 1:breakprint("!", lst[0], flush=True)input()for _ in range(int(input())):solve()