admin 题解分享 · 2024/4/17
最优分组(编程题) - 题解
视频中标准程序代码如下: ```java import java.util.Scanner; public class Main { static final int N = (int) 1e6 + 10; static double[] f = new double[N]; static double[] g = new double[N]; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); double p = scanner.nextDouble(); double ans = Double.MAX_VALUE; int ot = 1; double np = 1 - p; for (int i = 1; i <= n; i++) { f[i] = 1 - np; g[i] = np; np *= (1 - p); } double m = 1.0 * n * p; for (int i = 1; i <= n; i++) { if (n % i == 0) { double group = n / i; double res; if (i == 1) { res = group; } else { res = group * (f[i] * (i + 1) + g[i]); } if (res < ans) { ans = res; ot = i; } } } System.out.println(ot); } } ```
查看全文
2 0 0 13
CJL_001 题解分享 · 2024/4/21
最优分组(编程题) - 题解
``` 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