1104 Sum of Number Segments (20)

Posted 巴蜀小小生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1104 Sum of Number Segments (20)相关的知识,希望对你有一定的参考价值。

Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence. For example, given the sequence {0.1, 0.2, 0.3, 0.4}, we have 10 segments: (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).

Now given a sequence, you are supposed to find the sum of all the numbers in all the segments. For the previous example, the sum of all the 10 segments is 0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N, the size of the sequence which is no more than 10^5^. The next line contains N positive numbers in the sequence, each no more than 1.0, separated by a space.

Output Specification:

For each test case, print in one line the sum of all the numbers in all the segments, accurate up to 2 decimal places.

Sample Input:

4
0.1 0.2 0.3 0.4 

Sample Output:

5.00

注意点:第一次提交的时候sum = sum+i*(n-i+1)*a; 有两个测试点不能通过; 修改为sum = sum+1.0*(n-i+1)*i,或者sum=sum+a*i*(n-i+1)就是正确的,并且1.0必须前程才是正确的,。原因不是很明白,以后为了保险起见小数和整数相乘的时候,均把小数写在前
 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4   int n, i;
 5   double a, sum=0;
 6   cin>>n;
 7   for(i=1; i<=n; i++){
 8     cin>>a;
 9     sum = sum + a*i*(n-i+1);
10   }
11   printf("%.2f", sum);
12   return 0;
13 }

 

以上是关于1104 Sum of Number Segments (20)的主要内容,如果未能解决你的问题,请参考以下文章

1104 Sum of Number Segments(二刷)

1104 Sum of Number Segments (20)

1104 Sum of Number Segments (20分)(long double)

1104 Sum of Number Segments (20分)

1104 Sum of Number Segments

PAT甲级——A1104 Sum of Number Segments