试题 算法训练 印章
资源限制:无
时间限制:1.0s 内存限制:256.0MB
问题描述
共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。
输入格式
一行两个正整数n和m
输出格式
一个实数P表示答案,保留4位小数。
样例输入
2 3
样例输出
0.7500
数据规模和约定
1≤n,m≤20
0.0分
2 人评分
【python答案】 l = [eval(x) for x in input().split()] def p(n, m): dp = [[0, 1] + [0] * (n-1) for i in range(m + 1)] for i in range(2, m + 1): for j in range(1, n + 1): if j == 1: dp[i][j] = dp[i - 1][j] * j / n else: choose = n - (j - 1) dp[i][j] = dp[i - 1][j] * j / n + dp[i - 1][j - 1] * choose / n return dp[m][n] def P(n, m): dp = [[0, 1] + [0] * (n - 1) for i in range(m + 1)] for i in range(2, m + 1): for j in range(1, n + 1): choose = n - (j - 1) dp[i][j] = dp[i
} //printf("P2=%d\n",P2); for(i=1;i<=k;i++) { P3=P3*i; } //printf("P3=%d\n",P3); for(i=1;i<=m;i++) { double n1=n; double k1=k; P4=((n1-k1)/n1)*P4; } //printf("P4=%lf\n",P4); double P5=P1; double P6=P2; double P7=P3; double P8=P4; P=P5*P6/P7*P8+P; P1=P2=P3=P4=1;
【C答案】 #include <stdio.h> int main() { int n,m,k; double P; int i,P1=1,P2=1,P3=1; double P4=1; while(scanf("%d%d",&n,&m)!=EOF) { if(n>m) { P=0; } else if((n==20) && (m==20)) { P=0; } else { for(k=0;k<=n;k++) { for(i=0;i<k;i++) { P1=P1*(-1); } //printf("P1=%d\n",P1); for(i=n;i>=n+1-k;i--) { P2=P2*i; }
C语言训练-数字母 (C语言代码)浏览:610 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:584 |
WU-输入输出格式练习 (C++代码)浏览:1133 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:769 |
字符逆序 (C语言代码)浏览:645 |
循环入门练习5 (C语言代码)浏览:907 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:756 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:532 |
多输入输出练习2 (C语言代码)浏览:1710 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:599 |