zoukankan      html  css  js  c++  java
  • 1049. 数列的片段和(20)

    1049. 数列的片段和(20)

    时间限制
    200 ms
    内存限制
    65536 kB

    给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列{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

    分析:设第i(1~n)个数字为ai;计算每个数字需要加的次数(能组成连续片段的种数);设每组连续片段从start到end;
        包含a1的片段,向左有1种s(即a1本身),向右有4种e(包括a1本身),共1*4种;
        包含a2的片段,2种s,3种e,共2*3种;
        包含a3的片段,3种s,2种e,共3*2种;
        。。。。。。
        包含ai的片段,i种s,n-i+1种e,共i*(n-i+1)种。
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 int main(){
     5     int n;
     6     double sum=0,a;
     7     cin>>n;
     8     for(int i=1;i<=n;i++){
     9         scanf("%lf",&a);
    10         sum+=a*i*(n-i+1);
    11     } 
    12     printf("%.2lf",sum);
    13     return 0;
    14 } 
     
  • 相关阅读:
    hdu5728 PowMod
    CF1156E Special Segments of Permutation
    CF1182E Product Oriented Recurrence
    CF1082E Increasing Frequency
    CF623B Array GCD
    CF1168B Good Triple
    CF1175E Minimal Segment Cover
    php 正则
    windows 下安装composer
    windows apache "The requested operation has failed" 启动失败
  • 原文地址:https://www.cnblogs.com/Fresh--air/p/8586832.html
Copyright © 2011-2022 走看看