小工具知识网

当前位置: 首页 > 行业知识 > C++知识点总结(22):模拟算法真题 ★★★☆☆《安全警报》

行业知识

C++知识点总结(22):模拟算法真题 ★★★☆☆《安全警报》

2026-11-03 07:21:31 来源:互联网转载

安全警报

1. 审题

题���描述

()

Z市最大的金融公司:太平洋金融遭到了入侵,一名黑客潜入到了公司中,公司紧急启动安保程序,将大楼封锁,并安排作为安全主管的你对楼层进行搜查。所以你准备写一个程序,输入搜查楼层的顺序,寻找最有可能出现黑客的楼层。已知:

1、搜索一层楼,需要花费 11 11 11 秒

2、电梯每上一层楼,需要花费 7 7 7 秒

3、电梯每下一层楼,需要花费 5 5 5 秒

4、电梯初始在 1 1 1 楼

5、黑客躲在搜查总时间为质数的楼层

()

请你设计一个程序,输入楼层数以及巡楼的顺序,输出最容易出现黑客的楼层。

输入描述

输入文件:safe.in

共 2 2 2 行:

第 1 1 1 行包含 1 1 1 个整数 n n n,代表楼层数。

第 2 2 2 行包含 n n n 个整数,代表巡楼的顺序,楼层不会重复巡。

输入的数据保证一定有解。

输出描述

输出文件:safe.out

共 1 1 1 行,包含若干个整数,代表最容易出现黑客的楼层,每两个楼层之间使用空格隔开若有多个,按输入顺序输出即可。

样例1

输入

31 3 2

输出

1

提示

对于 30 % 30\% 30% 的数据, 2 ≤ n ≤ 30 2 \le n \le 30 2≤n≤30。

对于 100 % 100\% 100% 的数据, 2 ≤ n ≤ 200 2 \le n \le 200 2≤n≤200。

2. 思路

边输入边操作

  • 读入楼层数 n n n 和巡楼的顺序。
  • 按照读入的巡楼顺序,遍历楼层并存储时间。
  • 每到一层楼,都判断一下所用的时间是不是质数,如果是则输出该楼层。

    3. 参考答案

    #include #include using namespace std;int n, m;int now = 1, t = 0;bool isPrime(int x){    if (x         return false;    }    if (x == 2)    {        return true;    }    for (int i = 2; i * i         if (x % i == 0)        {            return false;        }    }    return true;}int main(){    freopen("safe.in", "r", stdin);    freopen("safe.out", "w", stdout);        // 输入数据    cin  n;    for (int i = 1; i         cin > m;                // 时间增加        if (m > now)        {            t += (m-now) * 7;        }        else        {            t += (now-m) * 5;        }        t += 11;                if (isPrime(t))        {            cout 

上一篇:服务器调用出错怎么解决?

下一篇:服务器串口怎么用?