京东笔试---通过考试(DP)

题目描述 

    小明同学要参加一场考试,考试一共有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;
}
时间: 2024-10-14 12:39:14

京东笔试---通过考试(DP)的相关文章

京东笔试(小帆)

2017/04/07 京东笔试一个半小时 包括100分的单选和0分的综合题 哭晕 单选包括行测和专业题 综合题又遇到了共享单车 可见最近这个是有多火 问题:1.单车破损严重,针对这个问题,从设计或者运营角度,来解决 2.共享单车的"未来"在哪里?

京东笔试-交易清单

题目要求:1.使用c语言实现,不能使用c++的stl容器,map.vector等等2.自己定义数据结构3.如果需要排序,自己写排序算法 股票交易中,高峰期委托买卖数量是十分大的,尤其在9:30分左右,而证券公司关心的抢手的信息条数会远小于委托买卖数量.实际情况是题目中的n会非常大,而s很小,因此需要考虑算法的时间复杂度. 题目如下:京东笔试-交易清单(京东2016实习生真题)题目描述金融证券行业超好的薪酬待遇,吸引了大批的求职者前往应聘,小东也不例外,准备应聘一家证券公司.面试官为考察她的数据分

[京东2017实习生笔试] 通过考试

时间限制C/C++语言:1000MS其它语言:3000MS 内存限制C/C++语言:65536KB其它语言:589824KB 题目描述 小明同学要参加一场考试,考试一共有n道题目,小明必须做对至少60%的题目才能通过考试.考试结束后,小明估算出每题做对的概率,p1,p2,...,pn.你能帮他算出他通过考试的概率吗? 输入 输入第一行一个数n(1<=n<=100),表示题目的个数.第二行n个整数,p1,p2,...,pn.表示小明有pi%的概率做对第i题.(0<=pi<=100)

BZOJ 1009: [HNOI2008]GT考试( dp + 矩阵快速幂 + kmp )

写了一个早上...就因为把长度为m的也算进去了... dp(i, j)表示准考证号前i个字符匹配了不吉利数字前j个的方案数. kmp预处理, 然后对于j进行枚举, 对数字0~9也枚举算出f(i, j)表示dp(x-1, j)对dp(x, i)的贡献.然后用矩阵快速幂就可以了. 时间复杂度O(M3logN + M) ------------------------------------------------------------------- #include<bits/stdc++.h>

京东笔试编程题:采购单+保卫方案

采购单时间限制:C/C++语言 1000MS:其他语言 3000MS内存限制:C/C++语言 65536KB:其他语言 589824KB题目描述:过年啦!小B高兴的不行了,她收到了很多红包,可以实现好多的愿望呢.小B可是对商店货架上心仪的货物红眼好久了,只因囊中羞涩作罢,这次她可是要大大的shopping一番.小B想去购物时,总是习惯性的把要买的东西列在一个购买清单上,每个物品单独列一行(即便要买多个某种物品),这次也不例外.小B早早的来到了商店,由于她太激动,以至于她到达商店的时候,服务员还没

京东笔试

N个数进栈,出栈序列有多少个?这个问题属于卡特兰数(h(n)=C(2n,n)/(n+1) (n=1,2,3,...))的应用 某系统中有3个并发进程,都需要同类资源4个,试问该系统保证不会发生死锁的最少资源数是______. A.9个B.10个C.4个D.12个3*3+1

2017京东笔试总结

第一题,给一个数A,求A用2-A-1进制表示的所有数的每一位的总和的平均数. 比如5,则用2进制表示为101:3进制表示为12:4进制表示为11,则所有数的总和为1+0+1+1+2+1+1 = 7 平均数为7/3要求表示成不可约分的形式. 思路比较简单辗转相除的方法,求出每一个进制表示的数各个位的总和,然后除以总的个数,这边最需要注意的一个点就是,最后的结果是要表示成不可约分的形势,因此在输出结果时候,还要除以分子和分母的最大公约数. #include <iostream> #include

2018京东笔试编程:完善JavaScript,实现删除一行,增加一行,计算总量。不能改动给出的html。

已给出的代码: <style> body,html{ padding: 0; margin: 0; font-size: 14px; color: #000000; } table{ border-collapse: collapse; width: 100%; table-layout: fixed; } thead{ background: #3d444c; color: #ffffff; } td,th{ border: 1px solid #e1e1e1; padding: 0; he

京东笔试之幸运数问题:4,7

题目描述 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字. 前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第K个幸运数. 输入 第一行一个数字T(T<=1000)表示测试数据的组数.对于每组测试数据,输出一个数K 输出 每组数据输出一行,第K个幸运数. 样例输入 351001000000000 样例输出 74744747 77477744774747744747444444447 思路 首先把4和7化为0