PKU-2601-Simple calculations

Description

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.

Input

The first line of an input contains an integer n. The next two lines consist of numbers a0 and an+1 each having two digits after decimal point, and the next n lines contain numbers ci (also with two digits after decimal point), one number per line.

Output

The output file should contain a1 in the same format as a0 and an+1.

Sample Input

1
50.50
25.50
10.15

Sample Output

27.85
推公式呀推公式~~~

a[1] + c[1] = 1/2 (a[0] + a[2])
a[2] + c[2] = 1/2 (a[1] + a[3])
...
a[n] + c[n] = 1/2 (a[n-1] + a[n+1])
then..
a[1..n] + c[1..n] = 1/2 (a[0..n-1] + a[2..n+1])

 

a[1] + a[n]  = a[0] + a[n+1] -2c[1..n]
a[1] + a[n-1]= a[0] + a[n]   -2c[1...n-1]
...
a[1] + a[1]  = a[0] + a[2]   -2c[1..1]
then..
na[1]+a[1..n]=na[0]+a[2..n+1]-2c[....]      c[....]={nc[1]+(n-1)c[2]+...+c[n]}

finally..

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

#include <stdio.h>

int main()
{
    
int n,i;
    
double a,b,temp;
    
double sum=0.0;
//    freopen("d:\\input.txt","r",stdin);
    scanf("%d",&n);
    scanf(
"%lf%lf",&a,&b);
    
for (i=0;i<n;i++)
    
{
        scanf(
"%lf",&temp);
        sum
+=(n-i)*temp;
    }

    sum
=-sum*2;
    sum
+=n*a+b;
    sum
/=n+1;
    printf(
"%.2lf\n",sum);
    
return 0;
}

 

posted @ 2009-05-30 10:52  ziroy  Views(232)  Comments(0)    收藏  举报