设检测人数为100人,根据改率为1%,则只有1个为阳性。k个人一组,则需要的试剂数量为:对所有分组进行合并检测所需要的试剂数100/k+其中1个分组阳性所需要的试剂数k+未分组人数所需的试剂数量。
暴力枚举k,记录使的检测试剂数最少的k.
#include<Stdio.h>
//传入参数n个人一组 ,返回n个人一组,检测100人需要的试剂数。
int dfs(int n)
{
int cns=0;
int s=100;
cns=(s/n)+n;//所需的的试剂数量 为检测人数/n个一组+
if(s/n!=n) //剩余的不到一组,每个人都需要作检测。
{
cns+=(s%n);
}
return cns;
}
int main()
{
int a=0,min=100,xb=0;
//假设检测人数为100人
for(int i=1;i<=100;i++) //枚举i个人一组
{
a=dfs(i);
if(min>a)
{
min=a; //记录最小的试剂数
xb=i; //记录最小试剂数对应最i个人一组
}
}
printf("%d\n",xb);
return 0;
}