The Problem
There is a sequence of n+2 elements a0, a1,…, an+1 (n <= 3000; -1000 <= ai 1000). It is known that ai = (ai–1 + ai+1)/2 – ci for each i=1, 2, ..., n. You are given a0, an+1, c1, ... , cn. Write a program which calculates a1.
The Input
The first line is the number of test cases, followed by a blank line.
Each test case will be separated by a single line.
The Output
For each test case, the output file should contain a1 in the same format as a0 and an+1.
Print a blank line between the outputs for two consecutive test cases.
Sample Input
1150.5025.5010.15
Sample Output
27.85 题意 Ai = ( Ai-1 + Ai+1) / 2 - Ci; 2Ai = Ai -1 + Ai + 1 - 2 Ci; 归纳可以知道: (n+1)A1 = nA0 + An+1 - 2(nC1 + (n-1)C2 + ……………………+ Cn);#include<iostream> #include<string.h> #include<stdio.h> #include<math.h> using namespace std; double s[3010]; int main(){ int num; cin >> num; while(num --) { memset(s,0,sizeof(s)); int n ; cin >> n; double a; double b; cin >> a >> b; for(int i = 1; i <= n ; i++) { cin >> s[i]; } double sum = 0; for(int i = n ; i >= 1; i--) { sum += i*s[n+1-i]; } double x = (n*a + b - 2*sum) / (n+1); printf("%.2lf\n",x); if(num) // 记住要换行 <a target=_blank name="SECTION0001004000000000000000" href="http://vjudge.net/"></a><a target=_blank name="SECTION0001004000000000000000" href="http://vjudge.net/"> Each test case will be separated by a single line. </a> printf("\n"); } return 0; }