这道题的思路其实很简单,首先你要知道,感染率是1%,并且是均匀分布,也就是说,每100个人他只能感染1个,那么最坏的情况就是分的每个组的都有人感染了,每个人都要一个盒子再测一次,所以分组时候每个组一定是少于100人的,确定好分组人数范围后,就很好求了
首先,假设有n个人
感染人数:n/100;
需要的盒子为:n/k+n*k/100 也就是n(1/k+k/100),只要这个值最小,k就是我们要的值
下面附上代码:
import java.util.*;
public class 求盒子 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//这里求概率需要用到小数,所以使用浮点型
double [] n = new double [100];
int k = 1 ;
//将分给每个组的人数代入,求出最小值
for (double i = 1; i <=99; i++) {
//这里把总人数n提取出来,就是所需要的盒子数=n*(每组人数/100+1/每组人数)
n [(int) i] = i/100+1/i;
}
//这里可以求出数组最小值的下标
for (int i = 2; i < n.length; i++) {
if (n[k]>n[i]) {
k=i;
}
}
System.out.println(k);
}
}
另外,如果大家遇到的是填空题的话,其实可以猜一下,因为我们中国疫情就是10人一组的,跟这个答案是一样的,说不准就撞上了