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

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

#include 
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;
}

你可能感兴趣的:(蓝桥杯真题,算法)