京东笔试---通过考试(DP)
2018-06-17 22:43:28来源:未知 阅读 ()
题目描述
小明同学要参加一场考试,考试一共有n道题目,小明必须作对至少60%的题目才能通过考试。考试结束后,小明估算出每题作对的概率,p1,p2,...,pn,你能帮他算出他通过考试的概率吗?
输入
输入第一行一个数n(1<=n<=100),表示题目的个数,第二行n个整数,p1,p2,...,pn,表示小明有pi%的概率作对第i题。(0<=pi<=100)
输出
小明通过考试的概率,最后结果四舍五入,保留小数点后五位。
样例输入
4
50 50 50 50
样例输出
0.31250
Hint
第一个样例中,每道题做对的概率都是0.5,想要通过考试至少要作对三题。所以最后的答案就是(C4(3)+C4(4))*0.5^4=5/16;
代码如下:
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<math.h> using namespace std; double dp[105][105]; double s[105]; double p[105]; int main() { int n; scanf("%d",&n); int num=n*0.6; if(num<n*0.6) num++; for(int j=1; j<=n; j++) scanf("%lf",&p[j]),p[j]=p[j]/100; dp[0][0]=1; for(int j=1; j<=n; j++) dp[j][0]=dp[j-1][0]*(1-p[j]); for(int j=1; j<=n; j++) for(int k=1; k<=j; k++) dp[j][k]=dp[j-1][k-1]*p[j]+dp[j-1][k]*(1-p[j]); s[0]=dp[n][0]; for(int k=1; k<=n; k++) s[k]=s[k-1]+dp[n][k]; printf("%.5lf\n",1-s[num-1]); return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 小游戏二之---------------五子棋 2020-03-23
- C++ 静态成员----细谈static修饰的成员 2020-03-19
- 数据结构---二叉搜索树 2020-02-06
- 寒假集训第一天---并查集题解 2020-01-15
- 使用技巧 --- 与VS Code相关 2020-01-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash