PAT B -1059 C言語競争(20点)

リンクをクリックして、完全なソリューションの概要PAT B -AC

トピック:
C言語のコンテストはコンテストのコンピュータの喜びの浙江大学によってホストされています。被写体が楽しみのためにレースがあるので、この賞のルールは非常に面白い展開になります。

  • 0、勝者は(このように非常に巨大な学生の研究論文など......)「ミステリー賞」を獲得します。
  • 1最高の賞を獲得する学生の素数のランキング - 小さな黄色の男性の人形を!
  • 2、他の人はチョコレートを取得します。

参加者のIDのゲームの最終順位とシリーズを考えると、あなたは賞金を取得する必要がありますこれらの出場者を与える必要があります。

入力フォーマット:
最初の行の入力は、Nの整数正(≦10与えられる。4)、参加者の数。最終的なランキングN列が与えられると、各行は、応募者ID(4桁)順位を与えます。次にKとK ID整数正照会するために与えられています。

出力フォーマット:
各IDを照会するための行に出力ID:賞品、またはミステリー賞(ミステリー賞)、またはミニオン(小黄人)、またはチョコレート(チョコレート)ある賞。IDチェックが簡単に印刷にランクされていない場合、あなたは冗談されていますか?(私はそれをプレイしています?)。チェック(あまりの食べることはできません):IDを(つまり賞品がすでに介して受信)までチェックされている場合は、IDを印刷します。

サンプル入力:

6
1111
6666
8888
1234
5555
0001
6
8888
0001
1111
2222
8888
2222

出力例:

8888: Minion
0001: Chocolate
1111: Mystery Award
2222: Are you kidding?
8888: Checked
2222: Are you kidding?

私のコード:

#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#include<sstream>
using namespace std;
//有的时候题目是一起做的,所以会有不需要的头文件

int Is_sushu(int a)
{
    if(a==2||a==3) return 1;
    for(int i=2;i<=sqrt(a);i++)
    {
        if(a%i == 0) return 0;
        if(i == int(sqrt(a)))return 1;
    }
}

int main()
{
    int N;
    cin>>N;
    int Ranking[10010]={0};
    int first=10000;
    for(int i=0;i<N;i++)
    {
        int t;
        cin>>t;
        Ranking[t]=i+1;
    }

    int M;
    cin>>M;
    for(int i=0;i<M;i++)
    {
        int t;
        cin>>t;
        if(Ranking[t]==0)printf("%04d: Are you kidding?\n",t);
        else if(Ranking[t]==10010)printf("%04d: Checked\n",t);
        else if(Ranking[t]==1)printf("%04d: Mystery Award\n",t);
        else if(Is_sushu(Ranking[t]))printf("%04d: Minion\n",t);
        else printf("%04d: Chocolate\n",t);

        if(Ranking[t])Ranking[t]=10010;
    }

    return 0;
}

公開された82元の記事 ウォンの賞賛1 ビュー1676

おすすめ

転載: blog.csdn.net/qq_34451909/article/details/104868881