1104. Sum of Number Segments (20)

来源:互联网 发布:元素周期表记忆软件 编辑:程序博客网 时间:2024/06/09 15:34

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 105. 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

//数学,找规律

//1 1 1 1     4    1 * 4 //  1 1 1     6    2 * 3//    1 1     6    3 * 2//      1     4    4 * 1//      //      //      //      //1 1 1 1 1    5   1 * 5//  1 1 1 1    8   2 * 4//    1 1 1    9   3 * 3//      1 1    8   4 * 2//        1    5   5 * 1//      i * (n-i+1)//      #include <bits/stdc++.h>using namespace std;int main(){    double sum = 0.0;    int n;    cin >> n;    double a[100000+5];    for (int i = 1; i <= n; i++) {        cin >> a[i];        double tmp = a[i]*i*(n-i+1)*1.0;        sum += tmp;     }     printf("%.2f\n", sum);    return 0;}
原创粉丝点击