1104. Sum of Number Segments (20)解题报告

来源:互联网 发布:微信网站怎么制作 知乎 编辑:程序博客网 时间:2024/05/22 17:48

经分析可得如下递推式:    

S_{i} = S_{i-1} - (i - 1) + n - (i  - 1)。S_{i}代表第i个数字在所有连续序列中出现的次数。n代表数字个数。



#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#include <cstdlib>int main(void){int n, i;double sum = 0.0, *arr;scanf("%d", &n);arr = new double[n + 1];for (i = 1; i <= n; i++) {scanf("%lf", arr + i);}double si = 0;for (i = 1; i <= n; i++) {si = si - (i - 1) + n - (i - 1);sum += arr[i] * si;}printf("%.2lf", sum);delete[] arr;return 0;}

0 0