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

本文共 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

你可能感兴趣的文章
基于环信sdk的陌生人交友php服务器代码开源
查看>>
Nonblocking I/O 与 Asynchronous I/O
查看>>
jekins搭建
查看>>
test
查看>>
持续集成与持续部署宝典Part 2:创建持续集成流水线
查看>>
javascript高级程序设计学习之数值转换 |Number(),parseInt(),parseFloat()
查看>>
Angular属性型指令
查看>>
如何处理错误信息 Pricing procedure could not be determined
查看>>
【CentOS 7笔记11】,目录权限,所有者与所有组,隐藏权限#171022
查看>>
Mybatis 详解--- 一级缓存、二级缓存
查看>>
2013 ACM/ICPC Asia Regional Changsha Online - C
查看>>
ACM中java快速入门
查看>>
discuz x2.5插件开发傻瓜图文教程,用demo说话
查看>>
利用HTML中的XML数据岛记录浏览
查看>>
unicode字符、python乱码问题
查看>>
cobbler get-loaders 通过代理下载
查看>>
通过脚本测试ubuntu的源
查看>>
一些不错的网站
查看>>
safari的一些问题
查看>>
面试官问我:平常如何对你的 Java 程序进行调优?
查看>>