zoukankan      html  css  js  c++  java
  • 1059. C语言竞赛(20)

    原题: https://www.patest.cn/contests/pat-b-practise/1059

    思路: 参赛者id是数组下标, 数组值是参赛者排名位置(从1开始),
    每次判断0不存在, -1领过奖了, 其它就是位置序号.

    实现:

    #include <stdio.h>
    #define LEN 10010
    int isPrime (int n);
    // -1 领过奖了 0不存在 其它就是位置序号
    int main (void) {
        int pnum;
        int snum;
        int stu[LEN] = {0};
        int pno;
        int i;
    
        scanf("%d", &pnum);
        for (i = 1; i <= pnum; i++) {
            scanf("%d", &pno);
            stu[pno] = i;
        }
        scanf("%d", &snum);
        for (i = 1; i <= snum; i++) {
            scanf("%d", &pno);
            if (stu[pno] == 1) {
                // 第一名
                printf("%04d: Mystery Award
    ", pno);
                stu[pno] = -1;
            } else if (stu[pno] == 0) {
                // 不存在
                printf("%04d: Are you kidding?
    ", pno);
            } else if (stu[pno] == -1) {
                // 已领过奖品
                printf("%04d: Checked
    ", pno);
            } else if (isPrime(stu[pno]) == 1) {
                // 排名是素数
                printf("%04d: Minion
    ", pno);
                stu[pno] = -1;
            } else {
                // 其它情况, 拿到巧克力
                printf("%04d: Chocolate
    ", pno);
                stu[pno] = -1;
            }
        }
    
        return 0;
    }
    
    // 0不是素数 1是素数
    // 从2开始
    int isPrime (int n) {
        int i = 2;
        while (i * i <= n) {
            if (n % i == 0) return 0;
            i++;
        }
        return 1;
    }
    
    
  • 相关阅读:
    计算机二级Python
    vivado三人表决仿真
    verilog设计加法器
    超前进位加法器
    OO第二单元总结
    OO第一单元总结
    第一次阅读作业
    安卓计算器
    安卓第四周作业
    第十四周作业
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7873775.html
Copyright © 2011-2022 走看看