这一题是10月份新加的题,网上也没啥答案,标签为dp动态规划,实际上我觉得不用动态规划也能做,毕竟python是自带了求组合数的函数,下面来看一下吧。

试题 算法训练 印章

资源限制

时间限制:1.0s   内存限制:256.0MB

问题描述

  共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。

输入格式

  一行两个正整数n和m

输出格式

  一个实数P表示答案,保留4位小数。

样例输入

2 3

样例输出

0.7500

数据规模和约定

1≤n,m≤20

解题思路:

其实是很基础的概率问题,有n种印章,买了m个;其实可以转化为m个小球放入n个盒子中,每个盒子不限数量,求每个盒子至少一个球的概率,还不好求,再转化成(1-至少一个盒子为空的概率)。

设某一盒子为空的事件为Ai,可以得出:

……

由相容的n个事件的和的概率公式可得,至少有一个盒子为空的概率为:

那么所有盒子都装有球的概率(集齐印章的概率)为:

python实现,代码如下:

n, m = map(int, input().split())
def quick_multi(n, m):# 快速幂,n的m次方,其实直接调用python的求幂的函数也可以,我为了是练习一下res = 1while m > 0:if m & 1:res *= nn *= nm = m >> 1return res
def compose_dp(num):# 动态规划求组合数,利用C(n,m) = C(n-1, m) + C(n-1, m-1)可以逐个求出# 初始化的数组全为1,且会多出一行一列,作为m=1或n=1时计算使用,操作时C(n,m)就对应数组的dp_comb[n][m]dp_comb = [[1 for i in range(num + 1)] for j in range(num + 1)]# 行序号定为n,列序号定为m,从n个元素中选m个出来组合,m==n时为1for n in range(2, num + 1):for m in range(1, n):dp_comb[n][m] = dp_comb[n-1][m] + dp_comb[n-1][m-1]# 虽然我们建立了从C(0,0)到C(num,num)的所有组合数可能,但本题只会用到C(num,1)到C(num,num-1)return dp_comb
def probability(n, m):if n > m:   # 如果买的还没种类多肯定不可能集齐prob = 0.0else:   # 如果买的比种类多# 计算出至少有一种印章没有集齐的概率p,用1-p即为所有印章都集齐的概率if n == 1:prob = 1.0else:# 先获取的动态规划的组合数数组(只需要取最后一行即可)dp_comb = compose_dp(n)[n]#print(dp_comb)p = 0for i in range(1, n):p += dp_comb[i] * quick_multi((1 - i / n), m) * quick_multi(-1, i - 1)prob = 1 - preturn prob
res = probability(n, m)
print('%.4f' % res)

ps:应该还有直接计算每个盒子至少有一个概率的方法,但是可能我脑子不太好使觉得太麻烦,欢迎大家讨论、改进!

蓝桥杯算法训练-印章相关推荐

  1. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

  2. 蓝桥杯算法训练 印章

    蓝桥杯 算法训练 印章 问题描述 ​ 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 ​ 一行两个正整数n和m 输出格式 ​ 一个实数P表示答案,保 ...

  3. 蓝桥杯-算法训练 印章

    试题 算法训练 印章 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整 ...

  4. C语言-蓝桥杯-算法训练 印章

    问题描述 共有 n 种图案的印章,每种图案的出现概率相同.小A买了 m 张印章,求小A集齐 n 种印章的概率. 输入格式 一行两个正整数n和m. 输出格式 一个实数P表示答案,保留4位小数. 样例输入 ...

  5. 蓝桥杯算法训练 印章 C语言实现

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整数n和m 输出格式 一 ...

  6. 蓝桥杯 算法训练 幸运的店家

    蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...

  7. 蓝桥杯 算法训练 Beaver's Calculator

    蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  8. 蓝桥杯算法训练-24点(Python)

    问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...

  9. 蓝桥杯——算法训练——数字三角形

    蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...

最新文章

  1. 阿里二面:redis分布式锁过期了但业务还没有执行完,怎么办
  2. 每秒1w+分布式事务--dtm的Redis存储性能测试分析
  3. Tomcat启动之异常java.lang.IllegalStateException
  4. Java 集合中存在多种数据类型
  5. 开课吧:C++STL常用remove算法有哪些?
  6. Appium工具使用教程
  7. 这些屏保让你的 Mac 闲置时也能变得美观实用
  8. wo-27s管理员账户和密码_开机密码忘了怎么解决
  9. Ubuntu系统下搭建FTP服务器图解
  10. python 发票信息提取_Python提取发票内容保存到Excel.md
  11. 深圳监控安装上门服务简介
  12. Latex罗马数字(一)
  13. Java/web/jsp根据pdf模板生成荣誉证书PDF文件
  14. 大三学生HTML个人网页作业作品——电影动漫言叶之庭(4页)带音乐
  15. Xshell配色方案
  16. ESP32开发之旅——RC522模块的使用
  17. 不收费的电脑数据恢复软件EasyRecovery16
  18. linux系统取消报警声,简单几步关闭Linux报警声和修改分辨率
  19. python提取word表格中数据
  20. python模拟器 截图_在Linux中20个命令行终端模拟器截图对比

热门文章

  1. pcap_findalldevs_ex 各参数简述
  2. 如何设计一个报表引擎
  3. 【论文review+总结】屏幕内容图像质量评估SC-IQA(Screen Content Image Quality Assessment)
  4. 微信公众号开发教程[018]-数据统计
  5. 汉诺塔python3函数编写和过程分析
  6. 2016年第三季度中国无线AP市场研究报告
  7. 怎样下载土豆、六间房等视频网站的在线视频
  8. PCIE/GPU/显卡参数性能查看工具搜集
  9. pytorch:交叉熵(cross entropy)
  10. Vue2 大型项目升级 Vue3 详细经验总结