Python | 合并检测
引言本题为2020年蓝桥杯的题,接下来我们将运用python将其解决。问题描述最近存在A病,最近在 A 国蔓延,为了尽快控制病毒,A 国准备给大量民众进病毒检测。然而,用于检测的试剂盒紧缺。为了解决这一困难,科学家想了一个办法:合并检测。即将从多个人(k个)采集的标本放到同一个试剂盒中进行检测。如果结果为阴性,则说明这 k个人都是阴性,用一个试剂盒完成了 k 个人的检测。如果结果为阳性,则说明至少有一个人为阳性,需要将这 k 个人的样本全部重新独立检测(从理论上看,如果检测前 k 1 个人都是阴性可以推断出第 k 个人是阳性,但是在实际操作中不会利用此推断,而是将 k 个人独立检测),加上最开始的合并检测,一共使用了 k + 1 个试剂盒完成了 k 个人的检测。A 国估计被测的民众的感染率大概是 1%,呈均匀分布。请问 k 取多少能最节省试剂盒?算法描述(1)假如我们直接进行计算。设这个国家有n个人,感染的人有0.01n个人,k个人一组,试剂的数量是n / k + 0.01n * k,那么n / k = 0.01n * k,求出k = 10(2)假如运用编程思维进行计算。依照题目要求,我们假设有100个人,其中有1个人感染,求找出这个人的最少用药量可以有1—100,接下来展示完整的代码。ans=[100,100]for k in range(1,51): # 用药量if 100 % k == 0:m = 100 // k + kelse:m = 100 // k + k + 1if m < ans[1]:ans[0],ans[1]=k,mprint(ans[0])
图3.1 运行流程结语此题只需找准用药量与人数之间的关系,运用简单的for循环和条件语句即可完成。实习编辑:李欣容稿件来源:深度学习与文旅应用实验室(DLETA)