资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。
输入格式
一行两个正整数n和m
输出格式
一个实数P表示答案,保留4位小数。
样例输入
2 3
样例输出
0.7500
数据规模和约定
1≤n,m≤20
分析链接
https://blog.csdn.net/okok__TXF/article/details/121099645
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken();
int n = (int) st.nval;
st.nextToken();
int m = (int) st.nval;
double[][] p = new double[m + 1][n + 1];
System.out.printf("%.4f", probability(p, n, m));
}
public static double probability(double[][] p, int n, int m) {
double x = 1.0 / n;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (i < j) {
p[i][j] = 0.0;
}
if (j == 1){
p[i][j] = Math.pow(x, i-1);
} else{
p[i][j] = p[i-1][j] * (j*1.0/n) + p[i-1][j-1] * ((n-j+1)*1.0/n);
}
}
}
return p[m][n];
}
}