美文网首页
1059 C语言竞赛 (20 分)

1059 C语言竞赛 (20 分)

作者: 蜜糖_7474 | 来源:发表于2018-12-19 20:53 被阅读0次

    C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:

    • 0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。
    • 1、排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!
    • 2、其他人将得到巧克力。

    给定比赛的最终排名以及一系列参赛者的 ID,你要给出这些参赛者应该获得的奖品。

    输入格式:

    输入第一行给出一个正整数 N(≤104​​ ),是参赛者人数。随后 N 行给出最终排名,每行按排名顺序给出一位参赛者的 ID(4 位数字组成)。接下来给出一个正整数 K 以及 K 个需要查询的 ID。

    输出格式:

    对每个要查询的 ID,在一行中输出 ID: 奖品,其中奖品或者是 Mystery Award(神秘大奖)、或者是 Minion(小黄人)、或者是 Chocolate(巧克力)。如果所查 ID 根本不在排名里,打印 Are you kidding?(耍我呢?)。如果该 ID 已经查过了(即奖品已经领过了),打印 ID: Checked(不能多吃多占)。

    输入样例:

    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?

    AC代码:

    #include <cmath>
    #include <cstdio>
    #include <map>
    #include <set>
    
    using namespace std;
    
    bool isPrime(int n) {
        if (n == 1) return false;
        if (n == 2 || n == 3) return true;
        for (int i = 2; i <= sqrt(n); ++i) 
            if (n % i == 0) return false;
        return true;
    }
    
    int main() {
        int n, t, k;
        map<int, int> mp;
        set<int> st;
        scanf("%d", &n);
        for (int i = 1; i <= n; ++i) {
            scanf("%d", &t);
            mp.insert(make_pair(t, i));
        }
        scanf("%d", &k);
        for (int i = 1; i <= k; i++) {
            scanf("%d", &t);
            printf("%04d: ", t);
            if (mp[t] == 0) {  //注意,这样会在原map里添加一组键值对
                printf("Are you kidding?\n");
                continue;
            }
            if (st.find(t) != st.end()) printf("Checked\n");
            else if (mp[t] == 1) printf("Mystery Award\n");
            else if (isPrime(mp[t])) printf("Minion\n");
            else printf("Chocolate\n");
            st.insert(t);
        }
        return 0;
    }
    

    总结:

    1、用到了 set::find() 这个函数,返回的是迭代器
    2、质数的判断

    相关文章

      网友评论

          本文标题:1059 C语言竞赛 (20 分)

          本文链接:https://www.haomeiwen.com/subject/fmeskqtx.html