n个人一人拿出一个礼物,然后取走,问恰好m个人自己拿到自己的礼物的概率是多少
错排公式的使用,在n个人中选出m个人拿到自己的礼物,剩下错排就好
python is soooooooooooooo good
D(n) = n! [(-1)^2/2! + … + (-1)^(n-1)/(n-1)! + (-1)^n/n!].
import sys
b=[0 for x in range(0, 120)]
f=[0 for x in range(0, 120)]
b[0]=1
for i in range(1,110):
b[i]=b[i-1]*i
f[0]=1
f[1]=0
for i in range(2,110):
fu=1
for j in range(0,i+1):
f[i]=f[i]+(1.0/b[j])*fu;
fu=fu*(-1)
f[i]=f[i]*b[i]
try:
while True:
line=sys.stdin.readline()
if not line:
break
l2=line.split()
n=int(l2[0])
m=int(l2[1])
ans=f[n-m]*(b[n]*1.0/(b[n-m]*b[m]))/b[n]
print '%.8f'%ans
except EOFError:
exit