标签:hidden 数字 tps 遍历 pre main author NPU 隐式转换
给定?个正数数列,我们可以从中截取任意的连续的?个数,称为?段。例如,给定数列{0.1, 0.2, 0.3,0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4)这10个?段。给定正整数数列,求出全部?段包含的所有的数之和。如本例中10个?段总和是0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0。
输?格式:
输?第??给出?个不超过105的正整数N,表示数列中数的个数,第??给出N个不超过1.0的正数,是数列中的数,其间以空格分隔。
输?格式:
在??中输出该序列所有?段包含的数之和,精确到?数点后2位。
输?样例:
4
0.1 0.2 0.3 0.4
输出样例:
5.00
给定?个正数数列,从中截取任意连续的?个数,称为?段。例如,给定数列{0.1, 0.2, 0.3, 0.4},可截取有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3)(0.3, 0.4) (0.4) 这10个?段。给定正整数数列,求出全部?段包含的所有的数之和。如本例中10个?段总和是0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0,在??中输出该序列所有?段包含的数之和,精确到?数点后2位
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
double sum = 0.0, temp;
for (int i = 1; i <= n; i++) {
cin >> temp;
sum = sum + temp * i * (n - i + 1);
}
printf("%.2f", sum);
return 0;
}
#include <iostream>
using namespace std;
int main(int argc,char * argv[]) {
long long n;
scanf("%d",&n);
double m, t=0.0;
for(long long i=1; i<=n; i++) {
scanf("%lf",&m);
t+=i*(n+1-i)*m; //如果i定义为int这样写,测试点2,3不通过,因为n最大取值为10^5,int*int越界
//t+=m*i*(n+1-i);
}
printf("%.2f",t);
return 0;
}
PAT Basic 1132 数列的?段和(20) [数学问题-简单数学]
标签:hidden 数字 tps 遍历 pre main author NPU 隐式转换
原文地址:https://www.cnblogs.com/houzm/p/12260721.html