結果
| 問題 | 
                            No.2768 Password Crack
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2024-05-31 22:08:44 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 240 ms / 2,000 ms | 
| コード長 | 2,100 bytes | 
| コンパイル時間 | 338 ms | 
| コンパイル使用メモリ | 82,432 KB | 
| 実行使用メモリ | 95,780 KB | 
| 平均クエリ数 | 962.33 | 
| 最終ジャッジ日時 | 2024-12-20 23:40:04 | 
| 合計ジャッジ時間 | 8,015 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 29 | 
ソースコード
def main():
  ALP = "abcdefghijklmnopqrstuvwxyz"
  alp = []
  for i in range(len(ALP)):
    alp.append(ALP[i])
  alp = tuple(alp)
  import random
  rand_num = 1000
  rand_alp = []
  for i in range(rand_num):
    rand_alp.append(tuple(random.sample(alp, 26)))
  N=int(input())
  base = ["a" for i in range(N)]
  kaku = [None for i in range(N)]
  # from collections import defaultdict
  for i in range(N):
    order = random.choice(rand_alp)
    now_nums = dict()
    flag = False
    for cha_num in range(26):
      if flag: break
      cha = order[cha_num]
      T = base[:]
      T[i] = cha
      print("?", "".join(T))
      n=int(input())
      if now_nums.get(n)==None:
        now_nums[n]=[cha]
      else:
        now_nums[n].append(cha)
      if cha_num>=2 and len(now_nums)==2:
        for key in now_nums:
          if len(now_nums[key])==1:
            kaku[i] = now_nums[key][0]
            flag = True
            break
  print("!", "".join(kaku))
if __name__ == "__main__":
  main()
# ALP = "abcdefghijklmnopqrstuvwxyz"
# alp = []
# for i in range(len(ALP)):
#   alp.append(ALP[i])
# alp = tuple(alp)
# import random
# rand_num = 1000
# rand_alp = []
# for i in range(rand_num):
#   rand_alp.append(tuple(random.sample(alp, 26)))
# N=6
# S="bareas"
# def judge(_T):
#   res = 0
#   for i in range(N):
#     if S[i]==_T[i]: res+=1
#   return res
# base = ["a" for i in range(N)]
# kaku = [None for i in range(N)]
# # from collections import defaultdict
# for i in range(N):
#   order = random.choice(rand_alp)
#   now_nums = dict()
#   flag = False
#   for cha_num in range(26):
#     if flag: break
#     cha = order[cha_num]
#     T = base[:]
#     T[i] = cha
#     # print("?", "".join(T))
#     # n=int(input())
#     n = judge("".join(T))
#     if now_nums.get(n)==None:
#       now_nums[n]=[cha]
#     else:
#       now_nums[n].append(cha)
#     if cha_num>=2 and len(now_nums)==2:
#       for key in now_nums:
#         if len(now_nums[key])==1:
#           kaku[i] = now_nums[key][0]
#           flag = True
#           break
# print("!", "".join())