0239 二十二蠢素数
* * * *
拉格朗日计划
* * * *
二十二蠢素数

将标有1至100的盘子随机排成一排,在所有素数中恰有22个素数不在原位上的概率是多少(对非素数无要求),答案四舍五入至小数点后12位小数,即0.abcdefghijkl的形式。

本题难度:



解答

令$f(n,k)$为长度为n的排列中前k个元素不在原位的排法总数,并规定边界值$f(n,0)=n!$,则有 $$f(n,k)=f(n,k-1)-f(n-1,k-1),$$ 这是因为前k个元素不在原位的排法等于从前$k-1$个元素不在原位的排法、即$f(n,k-1)$,中扣除第k个元素不动的排法,而第k个元素既然不动,则将其移除也不影响数量,也就是这样的排法有$f(n-1,k-1)$个。

从而递推计算就可得结果 $$\frac{\binom{25}{22}f(97,22)}{100!}\approx0.001887854841.$$

f=[[0]*min(n+1,23) for n in range(101)]
f[0][0]=f[1][0]=1
for n in range(2,101):
    f[n][0]=f[n-1][0]*n
for n in range(1,101):
    for k in range(1,min(n+1,23)):
        f[n][k]=f[n][k-1]-f[n-1][k-1]

print "%.12f" %(1.0*(f[25][0]/(6*f[22][0]))*f[97][22]/f[100][0])