问题描述
共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。
输入格式
一行两个正整数n和m
输出格式
一个实数P表示答案,保留4位小数。
样例输入
2 3
样例输出
0.7500
思路
创建m+1行 n+1列的二维数组
若从键盘输入4 3
dp = [
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
]
python代码
#创建二位数组
n,m = map(int,input().split())
#将数组初始化为0
dp = [[0 for i in range(n + 1)] for j in range(m + 1)]
for i in range(1 , m + 1):
for j in range(1 , n + 1):
if i < j :
dp[i][j] = 0
elif j == 1:
dp[i][j] = pow(1 / n ,i - 1)
else:
dp[i][j] = dp[i-1][j] * (1/n) * j + dp[i-1][j-1] * (1/n)*(n-(j-1))
print("{:.4f}".format(dp[m][n]))