1049 數列的片段和 20 (20 分)

2022-08-18 20:15:12 字數 1512 閱讀 1836

給定乙個正數數列,我們可以從中擷取任意的連續的幾個數,稱為片段。例如,給定數列,我們有(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

輸入格式:

輸入第一行給出乙個不超過10^5^的正整數n,表示數列中數的個數,第二行給出n個不超過1.0的正數,是數列中的數,其間以空格分隔。

輸出格式:

在一行中輸出該序列所有片段包含的數之和,精確到小數點後2位。

輸入樣例:

4

0.1 0.2 0.3 0.4

輸出樣例:

5.00

看到這乙個題首先想到dfs列出所有情況,然後相加。但是最後兩個測試點會超時,優化的話可能就是找規律了。分別計算每個數字出現的次數然後相加就可以了。

first try:

1 #include 2 #include 3 #include 

4 #include

5 #include 6 #include 7 #include 8 #include 9 typedef long

long

ll;10

using

namespace

std;

11int

n;12

double sum = 0;13

double a[100005

];14

void dfs(int i, double

c) else

20 dfs(i+1, c+a[i+1

]);21}22

intmain()

23

28for(int i = 0; i < n; i++)

31 printf("

%.2f

", sum);

32 }

ac :

1 #include 2 #include 3 #include 

4 #include

5 #include 6 #include 7 #include 8 #include 9 typedef long

long

ll;10

using

namespace

std;

11int

n;12

double sum = 0;13

double a[100005

];14

15int

main()

16

2223 printf("

%.2f

", sum);

24 }

1049 數列的片段和 (20 分)

1049 數列的片段和 20 分 給定乙個正數數列,我們可以從中擷取任意的連續的幾個數,稱為片段。例如,給定數列 我們有 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 個片段。...

1049 數列的片段和 (20 分)

1049 數列的片段和 20 分 給定乙個正數數列,我們可以從中擷取任意的連續的幾個數,稱為片段。例如,給定數列 我們有 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 個片段。...

1049 數列的片段和 (20 分)

給定乙個正數數列,我們可以從中擷取任意的連續的幾個數,稱為片段。例如,給定數列 我們有 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 個片段。給定正整數數列,求出全部片段包含的...