• PTA 乙级 1059 C语言竞赛 (20分)


     看见时间限制200ms,必然有猫腻(运行超时)

    如果查询的时候用遍历的方法一个个对应,必然会超时

    所以,建立一个足够大的数组,ID对应数组角标,存储ID的排名(二维数组第一位[0])和确定是否被检查过(二维数组第二位[1])(int id[10001][2])

    判断是否为素数,用平方根的方法判断,缩短运算速度(1013数素数

    1 bool isPrime(int num) {
    2     for (int i = 2; i <= sqrt(num); ++i) {
    3         if (num % i == 0) {
    4             return 0;
    5         }
    6     }
    7     return 1;
    8 }

    二维数组[0]存储名次,[1]存储是否被检查的标志位

     1 #include<iostream>
     2 #include<vector>
     3 #include<cmath>
     4 
     5 using namespace std;
     6 
     7 int id[10001][2] = { 0 };
     8 
     9 bool isPrime(int num) {                        //判断是否为素数
    10     for (int i = 2; i <= sqrt(num); ++i) 
    11         if (num % i == 0) return 0;
    12     return 1;
    13 }
    14 
    15 int main() {
    16     int n = 0, k = 0;
    17     cin >> n;
    18     for (int i = 0; i < n; ++i) {
    19         int tmp = 0;
    20         cin >> tmp;                            
    21         id[tmp][0] = i + 1;                            //对应id存储对应名次
    22     }
    23     cin >> k;
    24     for (int i = 0; i < k; ++i) {
    25         int fid = 0;
    26         cin >> fid;
    27         printf("%04d: ", fid);                        //保证四位,空位补零
    28         if (id[fid][0] == 0)                        //没有对应名次
    29             cout << "Are you kidding?" << endl;
    30         else if (id[fid][1] == 0) {                    //未被检查过
    31             if (id[fid][0] == 1) cout << "Mystery Award" << endl;
    32             else if (isPrime(id[fid][0])) cout << "Minion" << endl;
    33             else cout << "Chocolate" << endl;
    34             id[fid][1] = 1;                            //确认是否被检查的标志位置1
    35         }
    36         else
    37             cout << "Checked" << endl;
    38         
    39     }
    40     return 0;
    41 }

    默默地一点点变强,细节决定成败
  • 相关阅读:
    linux脚本练习之将数据导入oracle表
    linux脚本之一个程序调用另一个程序
    使用客户端Navicat连接数据库oracle19c
    centos7安装与卸载oracle19c
    Redis-cluster集群搭建(redis版本5.0.4)
    linux下redis的哨兵模式
    使用POI导入Excel文件
    MySQL8.0搭建MGR集群(MySQL-shell、MySQL-router)
    MySQL Shell用法
    CentOS 7下使用rpm包安装MySQL8.0
  • 原文地址:https://www.cnblogs.com/SCP-514/p/13574926.html
Copyright © 2020-2023  润新知