UVA-10014

Simple calculations

Time **Limit:** 3000MS |
**Memory Limit:** Unknown |
**64bit IO Format:** %lld &%llu |

Submit Status

Description

The problem

There is a sequence of n+2 elements a0, A1,..., An+1 (n <=, -1000 <= AI 1000). It is known this **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 was the number of test cases, followed by a blank line.

For each test case, the first line of a input file contains an integer n. The next lines consist of numbers a0 and an+1 each have a digits after decimal point, and the next n lines contain Numbers CI (also with the digits after decimal point), one number per line.

Each test case is separated by a.

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 the consecutive test cases.

Sample Input

1

1

50.50

25.50

10.15

Sample Output

27.85

Source

Root:: Prominent problemsetters:: Alex Gevak

Root:: Competitive programming 3:the New Lower Bound of programming contests (Steven & Felix Halim):: Mathematics: : Ad Hoc Mathematics problems:: Finding Pattern or Formula, easier

Root:: Competitive programming 2:this increases the lower bound of programming contests. Again (Steven & Felix Halim):: Mathematics:: Ad Hoc Mathematics problems:: Finding Pattern or Formula

Root:: AOAPC i:beginning algorithm Contests (Rujia Liu):: Volume 1. Elementary Problem Solving:: Maths-misc

**Very classical mathematical deduction!!!**

**First, according to test instructions a[i] = (A[i-1] + a[i+1])/2-c[i];**

**Transform can get a[i+1] = (A[i] + c[i]) * 2-a[i-1];**

**Then a[n+1] = (A[n] + c[n]) * 2-a[n-1]**

**= [(A[n-1] + c[n-1]) * 2-a[n-2] + c[n]] * 2-a[n-1]**

**= 3*a[n-1]-2*a[n-2] + 4*c[n-1] + 2*c[n]**

**= 4*a[n-2]-3*a[n-3] + 6*c[n-2] + 4*c[n-1] + 2*c[n]**

**= 5*a[n-3]-4*a[n-4] +8*c[n-3] + 6*C[n-2] + 4*c[ N-1] + 2*C[n]**

**....**

**= (n+1) *a[1]-n *a[0] + (n+1-i) * 2 * c[i] + ....**

**Then A[1] * (n+1) = a[n+1] + n*a[0]-(n+1-i) *2*c[i] + .....**

**The hand knocks really slow ...**

**AC Code:**

Uva-10014-simple Calculations (Classic math derivation!!) ）