• PAT(Advanced Level)A1116. Come on! Let's C


    题意

    举行了比赛,冠军有神秘奖,名次是素数的人会收到小黄人,其他的任何人会收到巧克力,不在名单里的人也要检查出来,还要识别出已经检查过的人

    思路

    • 分别用2个unordered_map<int, int>来记住排名和是否有在名单里
    • 接下来依次判断即可

    代码

    #include <iostream>
    #include <vector>
    #include <queue>
    #include <map>
    #include <string.h>
    #include <set>
    #include <unordered_map>
    #include <algorithm>
    using namespace std;
    unordered_map<int, int> ranklist;
    unordered_map<int, int> namelist;
    bool is_prime(int x) {
        if(x <= 1)  return false;
        for(int i = 2; i * i <= x; i++) {
            if(x % i == 0)   return false;
        }
        return true;
    }
    int main() {
        int N, K, tmp;
        cin >> N;
        for(int i = 1; i <= N; i++) {
            cin >> tmp;
            ranklist[tmp] = i;
            namelist[tmp] = 1;
        }
        cin >> K;
        bool checked[10001] = {0};
        for(int i = 0; i < K; i++) {
            cin >> tmp;
            if(namelist[tmp] == 0)                          // 不在名单上
                printf("%04d: Are you kidding?
    ", tmp);
            else if(checked[tmp])                           // 已经检查过了
                printf("%04d: Checked
    ", tmp);
            else {
                checked[tmp] = true;
                if(ranklist[tmp] == 1)                      // 第一名
                    printf("%04d: Mystery Award
    ", tmp);
                else if(is_prime(ranklist[tmp]))            // 名次为素数
                    printf("%04d: Minion
    ", tmp);
                else
                    printf("%04d: Chocolate
    ", tmp);       // 巧克力
            }
        }
        return 0;
    }
    
    如有转载,请注明出处QAQ
  • 相关阅读:
    Map 合并
    如何对hashmap按value值排序
    svn使用
    java中key-value数据有重复KEY如何存储
    linux 定时
    java 执行shell命令
    Java相对路径读取文件
    MySql之on duplicate key update详解
    前端学习资源整合
    Number浮点数运算详解
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/14532843.html
Copyright © 2020-2023  润新知