列表

详情


NC201401. 讲话

描述

众所周知,牛可乐 的口胡能力十分强大
牛可乐 要讲 n 件事情,我们把这些事情从 标号。
牛可乐每讲一件事需要耗费一个单位的时间,但是 牛可乐讲事情和普通人不同:牛可乐讲完 第 i 件事时,只有 p_i 的概率继续讲下一件事(第 i+1 件),也就是说,牛可乐讲完第 i 件事后有 (1-p_i) 的概率从第 i-1 件事开始讲!
牛可乐讲完第 n 件事,并且决定讲下一件事时,牛可乐才算是把这 n 件事讲完了。
牛妹是个不耐烦的女孩子,她想问问你 牛可乐期望要讲多久才能把 n 件事情全部讲完。

输入描述

第一行一个整数 n
第二行 n 个浮点数,代表 p_i ,保证

输出描述

一行一个浮点数,表示 牛可乐期望要多久才能把全部事情讲完(保留到小数点后 3 位)

示例1

输入:

4
1 0.6 0.4 0.2

输出:

38.333

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 3ms, 内存消耗: 500K, 提交时间: 2020-10-31 21:41:22

#include<bits/stdc++.h>
using namespace std;
double a[100001],f[100001];
int n,i;
int main()
{
	for(cin>>n;i<n;i++)
	{
		cin>>a[i];
		f[i+1]=f[i]+1.0/a[i]+(1-a[i])*(f[i]-f[i-1])/a[i];
	}printf("%.3f",f[n]);
}

C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 616K, 提交时间: 2020-03-12 07:52:24

#include<stdio.h>
#include<iostream>
using namespace std;
double a,m,p;
int main(){
int n,i;
cin>>n;
for(i=1;i<=n;i++){
cin>>p;
m=(1+m*(1-p))/p;
a+=m;
}
printf("%.3f",a);
}

上一题