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:ミニオン
0001:チョコ
1111:ミステリー賞
2222:あなたは冗談されていますか?
8888:チェック
2222:あなたは冗談されていますか?
#include <iostream>
using namespace std;
bool isprime(int n);
int main()
{
int arr[9999] = {0};
int total = 0;
cin >> total;
for (int i = 1; i <= total; i++)
{
int id;
cin >> id;
arr[id] = i; //将学生id放入散列表,其中数组存入i即排名
}
int k;
cin >> k;
for (int i = 0; i < k; i++)
{
int search;
scanf("%d", &search);
if (arr[search] > 0)
{
if (arr[search] == 1)
printf("%04d: Mystery Award\n", search);
else if (isprime(arr[search]))
printf("%04d: Minion\n", search);
else
printf("%04d: Chocolate\n", search);
arr[search] = -1; //给过奖励的将值赋为-1,以免重复给奖
}
else if (arr[search] == 0)
printf("%04d: Are you kidding?\n", search);
else if (arr[search] == -1) //等于-1时说明重复了
printf("%04d: Checked\n", search);
}
return 0;
}
bool isprime(int num){
if(num == 1) return false;
for(int i = 2; i * i <= num; i++){
if(num % i == 0)
return false;
}
return true;
}
最初のテストポイント2は、問題のため、私は私<= numは*が存在すべきである素数(以下のコードセクションに注意してください)が決定され、終わっていません。たとえば:3 = 9 * 3、9は素数ではありませんが、プレスの描画コードは、3素数である9をスキップするかどうか。
bool isprime(int num){
if(num == 1) return false;
for(int i = 2; i * i < num; i++) //起初写的是<num而不是<=
{
if(num % i == 0)
return false;
}
return true;
}