印章
共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。
输入格式:
一行两个正整数n和m。1≤n,m≤20
输出格式:
一个实数P表示答案,保留4位小数。
输入样例:
在这里给出一组输入。例如:
2 3
输出样例:
在这里给出相应的输出。例如:
0.7500
代码
nm = list(map(int,input().split()))
n = nm[0]
m = nm[1]
rect = [[0 for _ in range(0,n)] for _ in range(0,m)]
#拥有一张时,拥有一张的概率必为1
rect[0][0] = 1
for i in range(1,m):
rect[i][0] = (1/n)**i
for i in range(1,m):
for j in range(1,n):
rect[i][j] = rect[i-1][j]*((j+1)/n) + rect[i-1][j-1]*((n-j)/n)
print("%.4f" % rect[-1][-1])
印章
共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。
输入格式:
一行两个正整数n和m。1≤n,m≤20
输出格式:
一个实数P表示答案,保留4位小数。
输入样例:
在这里给出一组输入。例如:
2 3
输出样例:
在这里给出相应的输出。例如:
0.7500
代码
nm = list(map(int,input().split()))
n = nm[0]
m = nm[1]
rect = [[0 for _ in range(0,n)] for _ in range(0,m)]
#拥有一张时,拥有一张的概率必为1
rect[0][0] = 1
for i in range(1,m):
rect[i][0] = (1/n)**i
for i in range(1,m):
for j in range(1,n):
rect[i][j] = rect[i-1][j]*((j+1)/n) + rect[i-1][j-1]*((n-j)/n)
print("%.4f" % rect[-1][-1])