欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第十一届蓝桥杯省赛 C/C++ 大学B组试题 C: 合并检测

程序员文章站 2022-07-06 21:09:08
...

试题 C: 合并检测
【问题描述】
新冠疫情由新冠病毒引起,最近在 A 国蔓延,为了尽快控制疫情,A 国准
备给大量民众进病毒核酸检测。
然而,用于检测的试剂盒紧缺。
为了解决这一困难,科学家想了一个办法:合并检测。即将从多个人(k
个)采集的标本放到同一个试剂盒中进行检测。如果结果为阴性,则说明这 k
个人都是阴性,用一个试剂盒完成了 k 个人的检测。如果结果为阳性,则说明
至少有一个人为阳性,需要将这 k 个人的样本全部重新独立检测(从理论上看,
如果检测前 k 1 个人都是阴性可以推断出第 k 个人是阳性,但是在实际操作中
不会利用此推断,而是将 k 个人独立检测),加上最开始的合并检测,一共使用
了 k + 1 个试剂盒完成了 k 个人的检测。
A 国估计被测的民众的感染率大概是 1%,呈均匀分布。请问 k 取多少能
最节省试剂盒?
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

#include <bits/stdc++.h>
using namespace std;
int main() {
  int N = 1000;
  int ans;
  int minn = 9999999;
  int sum = 0;//试剂盒的数量
  for (int k = 1;k <= 1000;k++) {
    if (N % k == 0) {
      sum = N / k + 10 * k; 
    } else {
      sum = N / k + 10 * k + 1;
    }
    if (sum < minn) {
      minn = sum;
      ans = k;
    }
  } 
  cout << ans;
  return 0;
}