博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3625 第一类斯特林数
阅读量:6862 次
发布时间:2019-06-26

本文共 1067 字,大约阅读时间需要 3 分钟。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625

 

题意: 

n个房间,房间里面放着钥匙,允许破门而入k个,拿到房间里面的钥匙后可以打开对应的门,但是1号门不能破门而入,求这样检查完所有房间,概率是多少?

 

分析:

钥匙随机放到房间,全排列有n!;

n个房间,破k个门进入,就是第一类斯特林数S(n,k);

但是,第一个门不能破门而入,就是要减去S(n-1,k-1);

然后求和SUM = S(n,i)  {1<=i<=k}

概率就是 SUM / N!

1 #include 
2 3 using namespace std; 4 5 long long fac[21]; 6 long long stir[21][21]; 7 8 void init() { 9 fac[1] = 1;10 for(int i=2;i<21;i++)11 fac[i] = i*fac[i-1];12 13 memset(stir,0,sizeof(stir));14 stir[0][0] = 1;15 stir[1][1] = 1;16 17 for(int i=2;i<21;i++) {18 for(int j=1;j<=i;j++)19 stir[i][j] = stir[i-1][j-1] + (i-1)*stir[i-1][j];20 }21 22 }23 int main()24 {25 init();26 int t;27 scanf("%d",&t);28 while(t--) {29 int n,k;30 scanf("%d%d",&n,&k);31 32 long long cnt = 0;33 for(int i=1;i<=k;i++)34 cnt+= stir[n][i] - stir[n-1][i-1];35 36 printf("%.4lf\n",1.0*cnt/fac[n]);37 38 }39 return 0;40 }
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/6918253.html

你可能感兴趣的文章
使用jemeter手工编写注册、登陆脚本 运用 fiddler (三)
查看>>
uva 10288 Coupons (分数模板)
查看>>
使用docker的kms服务器激活office2016专业增强版
查看>>
Redis
查看>>
程序员需要淡定
查看>>
大整数算法[11] Karatsuba乘法
查看>>
为什么可以用while(cin)?
查看>>
Cisco 交换机与路由器故障处理方法分享
查看>>
linux运行级别
查看>>
Debian(Linux)+XAMPP(LAMPP)+Zend Studio + PHP +XDebug 完整的开发环境配置方法。
查看>>
Python字符集编码和文件读写 [转]
查看>>
COGS728. [网络流24题] 最小路径覆盖问题
查看>>
Python----切片
查看>>
处理浏览器兼容性(持续更新)
查看>>
常用数据库 JDBC URL 格式
查看>>
c#在不安装Oracle客户端的情况下与服务器上的Oracle数据库交互
查看>>
Java回环变位和倒置字符串
查看>>
前景检测算法_1(codebook和平均背景法)
查看>>
分析函数(一)
查看>>
去掉iframe横向滚动条_iframe滚动条
查看>>