蓝桥杯算法训练-印章
这一题是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:应该还有直接计算每个盒子至少有一个概率的方法,但是可能我脑子不太好使觉得太麻烦,欢迎大家讨论、改进!
蓝桥杯算法训练-印章相关推荐
- 蓝桥杯 算法训练 印章
蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...
- 蓝桥杯算法训练 印章
蓝桥杯 算法训练 印章 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案,保 ...
- 蓝桥杯-算法训练 印章
试题 算法训练 印章 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整 ...
- C语言-蓝桥杯-算法训练 印章
问题描述 共有 n 种图案的印章,每种图案的出现概率相同.小A买了 m 张印章,求小A集齐 n 种印章的概率. 输入格式 一行两个正整数n和m. 输出格式 一个实数P表示答案,保留4位小数. 样例输入 ...
- 蓝桥杯算法训练 印章 C语言实现
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整数n和m 输出格式 一 ...
- 蓝桥杯 算法训练 幸运的店家
蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...
- 蓝桥杯 算法训练 Beaver's Calculator
蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...
- 蓝桥杯算法训练-24点(Python)
问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...
- 蓝桥杯——算法训练——数字三角形
蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...
最新文章
- 阿里二面:redis分布式锁过期了但业务还没有执行完,怎么办
- 每秒1w+分布式事务--dtm的Redis存储性能测试分析
- Tomcat启动之异常java.lang.IllegalStateException
- Java 集合中存在多种数据类型
- 开课吧:C++STL常用remove算法有哪些?
- Appium工具使用教程
- 这些屏保让你的 Mac 闲置时也能变得美观实用
- wo-27s管理员账户和密码_开机密码忘了怎么解决
- Ubuntu系统下搭建FTP服务器图解
- python 发票信息提取_Python提取发票内容保存到Excel.md
- 深圳监控安装上门服务简介
- Latex罗马数字(一)
- Java/web/jsp根据pdf模板生成荣誉证书PDF文件
- 大三学生HTML个人网页作业作品——电影动漫言叶之庭(4页)带音乐
- Xshell配色方案
- ESP32开发之旅——RC522模块的使用
- 不收费的电脑数据恢复软件EasyRecovery16
- linux系统取消报警声,简单几步关闭Linux报警声和修改分辨率
- python提取word表格中数据
- python模拟器 截图_在Linux中20个命令行终端模拟器截图对比
热门文章
- pcap_findalldevs_ex 各参数简述
- 如何设计一个报表引擎
- 【论文review+总结】屏幕内容图像质量评估SC-IQA(Screen Content Image Quality Assessment)
- 微信公众号开发教程[018]-数据统计
- 汉诺塔python3函数编写和过程分析
- 2016年第三季度中国无线AP市场研究报告
- 怎样下载土豆、六间房等视频网站的在线视频
- PCIE/GPU/显卡参数性能查看工具搜集
- pytorch:交叉熵(cross entropy)
- Vue2 大型项目升级 Vue3 详细经验总结