PAT乙級1059.C言語コンテスト-python

2508 ワード

文書ディレクトリ
  • 前言
  • 1. タイトル
  • 2. コード
  • 前言
    この問題は論理的に複雑なだけで、まじめに書いて、いくつかの条件を捨てないでください.この問題は素数で判断する必要があり、時間がかかりますが、pythonはもともと実行時間が長く、最後に私のコードには2つのタイムアウトがあります.私は気にしません.もっと良い方法があれば、批判を歓迎します.
    1.テーマ
    C言語コンテストは浙江大学コンピュータ学院が主宰した楽しいコンテストである.コンテストの主旨が面白いためである以上、授賞規則も滑稽に制定されています.
  • チャンピオンは「謎の大賞」(例えば巨大な学生研究論文集......)を受賞する.
  • 素数の学生は最高の賞品--黄色の人形を獲得します!
  • 他の人はチョコレートを手に入れます.

  • 与えられた試合の最終順位と一連の参加者のIDは、これらの参加者が獲得すべき賞品を与えなければなりません.
  • 入力フォーマット:最初の行に入力すると、正の整数N(⩽1 0 4)N(leqslant 10^4)N(⩽104)が与えられ、参加者数である.その後、N N N行は最終順位を与え、各行は順位順に1人の参加者のID(4桁の数字からなる)を与える.次に、正の整数K K K K及びK K K個のクエリを必要とするIDを与える.
  • 出力フォーマット:クエリーするIDごとに、賞品またはID: (ミステリー大賞)、またはMystery Award(小黄人)、またはMinion(チョコレート)の1行にChocolateが出力されます.調べたIDがランキングに入っていない場合は、Are you kidding?を印刷します(私をからかっていますか?)このIDがすでに調べられている場合(賞品が受け取った場合)、ID:Checkedを印刷します(多く食べてはいけません).
  • 入力サンプル:6 1111 6666 8888 1234 55550001 6 8888 0001 1111 2222 8888 2222
  • 出力サンプル:8888:Minionbushaoyu 0001:Chocolate 1111:Mystery Award 2222:Are you kidding?8888: Checked 2222: Are you kidding?

  • 2.コード
    2つのタイムアウトがあったのか、素数を求めるときにタイムアウトしたのか推定します.
    def isPrem(n):
      if n== 2: return True
      for i in range(int(n/2))[2:]:
        if n%i == 0:
          return False
          
      return True
      
    
    
    N = int(input())
    ID = []
    check = []
    
    for i in range(N):
      tem = input()
      ID.append(tem)
      
    K = int(input())
    for i in range(K):
      tem = input()
      if tem not in ID:
        print(tem+": Are you kidding?")
      else:
        index = ID.index(tem)+1
        if index not in check:
          check.append(index)
          if index == 1: print(tem+": Mystery Award")
          elif isPrem(index): print(tem+": Minion")
          else: print(tem+": Chocolate")
        else:
          print(tem+": Checked")
    def isPrem(n):
      if n== 2: return True
      for i in range(int(n/2))[2:]:
        if n%i == 0:
          return False
          
      return True
      
    
    
    N = int(input())
    ID = []
    check = []
    
    for i in range(N):
      tem = input()
      ID.append(tem)
      
    K = int(input())
    for i in range(K):
      tem = input()
      if tem not in ID:
        print(tem+": Are you kidding?")
      else:
        index = ID.index(tem)+1
        if index not in check:
          check.append(index)
          if index == 1: print(tem+": Mystery Award")
          elif isPrem(index): print(tem+": Minion")
          else: print(tem+": Chocolate")
        else:
          print(tem+": Checked")