PAT_甲级_1116 Come on! Let's C

题目大意

给定一个长度为N的排名列表和长度为K的查询列表,需要你按照如下规则输出每一个查询的结果.

  • 1、排名第一的获得Mystery Award奖品
  • 2、排名为素数的获得Minion奖品
  • 3、所有其他参加比赛的人均获得Chocolate奖品
  • 4、对于非法查询输出Are you kidding?
  • 5、对于重复查询输出Checked

算法思路

按照规则模拟即可,使用valid数组记录合法的输入,Rank记录每一个人的排名,checked数组记录已经查询的记录,对于每一次查询,首先判断是否合法,如果合法再判断是否已经查询过,如果没有,就按照1,2,3规则进行查询即可,最后得将checked[query]置为true

提交结果

PAT_甲级_1116 Come on! Let's C_第1张图片

AC代码

#include
#include
#include
#include

using namespace std;

int valid[10000];
int checked[10000];
int Rank[10000];

bool isPrime(int x){
    if(n<=1) return false;
    int n = (int)sqrt(x*1.0);
    for(int i=2;i<=n;++i){
        if(x%i==0){
            return false;
        }
    }
    return true;
}

int main() {
    int n;
    scanf("%d",&n);
    vector v(n);
    for(int i=0;i

你可能感兴趣的:(c++数据结构和算法)