返回题解分享
讨论 / 题解分享/ 帖子详情

最优分组(编程题) - 题解

import java.util.*;

public class Main1 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        double p = scanner.nextDouble();
        int ot = 1;
        double ans = Double.MAX_VALUE;

        for (int i = 1; i <= n; i++) {
            if (n % i == 0) {
                double res;
                double group = n / i;
                if (i == 1) {
                    res = group;
                } else {
                    //至少有一个被感染的概率*组数*每组的个数 + 组数
                    res = (1 - Math.pow(1 - p, i)) * group * i + group;
                }
                if (res < ans) {
                    ans = res;
                    ot = i;
                }
            }
        }
        System.out.println(ot);
    }
}
0 回复 0 转发 0 喜欢 3 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!