PAT A1104 Sum of Number Segments (20分)

前言

传送门

正文


参考题解

#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;
}
全部评论

相关推荐

迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
哇哇的菜鸡oc:他这不叫校招offer,而是实习offer
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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