前言
正文
参考题解
#include<iostream>
using namespace std;
/* 题意:给定n个不超过1.0的正数,将该序列的所有连续子序列中的元素之和累加 求出一个sum值(保留两位小数) 思路:通过分析可以找到规律,对于序列中的某个元素,包含它的 序列是以它或者它左边的元素为左端点,它或者它右边的元素为右端点 的序列。故对于第i个元素,其出现的次数总共有i*(n-i+1) 个 注意: 真就头秃,使用double类型来存储res,发现测试点2始终过不了,后来 在网上搜索后发现是在n比较大时,double类型的值多次累加导致的精度误差 */
int main(){
int n;
//double res=0.0,temp;
double temp;
long long res;
cin>>n;
for(int i=1;i<=n;i++){
cin>>temp;
res+=(long long)(temp*1000)*i*(n-i+1);
}
printf("%.2f\n",res/1000.0);
return 0;
}