阿里笔试编程题,求助一下。

这是阿里的题,求助一下,蟹蟹。 主要是get不到题目的点。

小明、小华,是校内公认的数据算法大牛。两人组队先后参加了阿里云天池大赛多项奖金赛事,多次获奖,小明是其中的队长。最近的一次工业数据智能竞赛中,两人又斩获季军,获得奖金1万元。

作为算法大牛,两人竞赛奖金分配也有独特方式,由两人共同编写的一个程序来决定奖金的归属。每次获奖后,这个程序首先会随机产生若干0~1之间的实数{p_1, p_2, …, p_n},然后从小明开始,第一轮以p_1的概率将奖金全部分配给小明,第二轮以p_2的概率将奖金全部分配给小华,这样交替地小明、小华以p_i的概率获得奖金的全部,一旦奖金被分配,则程序终止,如果n轮之后奖金依旧没发出,则从p_1开始继续重复(这里需要注意,如果n是奇数,则第二次从p_1开始的时候,这一轮是以p_1的概率分配给小华);直到100轮,如果奖金还未被分配,程序终止,两人约定通过支付宝将奖金捐出去。

输入:
输入数据包含N+1行,
第一行包含一个整数N
接下来N行,每行一个0~1之间的实数,从p_1到p_N
输出:
单独一行,输出一个小数,表示小明最终获得奖金的概率,结果四舍五入,小数点后严格保留4位(这里需要注意,如果结果为0.5,则输出0.5000)。
输入范例:
1
0.999999
输出范例:
1.0000

#阿里巴巴##笔试题目#
全部评论
int N;     cin >> N;     vector<double> p(N);     for (int i = 0; i < N; i++)     {         cin >> p[i];     }     vector<double> p100(100);     for (int i = 0; i < 100; i++)     {         int index = i % N;         p100[i] = p[index];     }     double sum = 0.0;     double pre = 1.0;     for (int i = 0; i < 50; i+=2)     {         sum += pre * p100[i];         pre *= ((1.0 - p100[i]) * (1.0 - p100[i + 1]));     }     printf("%.4f\n", sum);
点赞 回复 分享
发布于 2019-04-12 20:49
点赞 回复 分享
发布于 2019-04-12 20:52
你是怎么把题弄出来的😂
点赞 回复 分享
发布于 2019-04-12 20:44
班上同学聚餐吃火锅,一锅煮了的M(1<=M<=50)个鱼丸和N(1<=N<=50)个肉丸,现欲将M个鱼丸和N个肉丸分到K(1<=K<=50)个碗中,允许有空碗,鱼丸和肉丸不允许混在同一个碗里,问共有多少种装法?假设碗足够大,能装50个鱼丸或者50个肉丸,碗之间也没有区别,因此当M=N=1,K=3时,只有1种装法,因为(1,1,0)(1,0,1)(0,1,1)被看作是同一种装法。 这是第二道编程题 分享一下思路
点赞 回复 分享
发布于 2019-04-12 20:49
我也没看懂这个题到底啥意思
点赞 回复 分享
发布于 2019-04-12 20:46
我是算期望,但只过了20%
点赞 回复 分享
发布于 2019-04-12 20:44
没有大佬看看吗
点赞 回复 分享
发布于 2019-04-12 20:42

相关推荐

ddd7_:跟我一模一样,加微信的hr都同一个,扫码了白年书人查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
21
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务