URAL_1047

    根据原式可以得a[n+1]-a[n]=a[n]-a[n-1]+2*c[n]①,设S[n]=c[1]+c[2]+…+c[n],对①式叠加相消可以得到a[n+1]-a[1]=a[n]-a[0]+2*S[n],整理一下得到a[n+1]-a[n]=a[1]-a[0]+2*S[n]②,对②式叠加相消可以得到a[n+1]-a[1]=n*(a[1]-a[0])+2*(S[1]+S[2]+…+S[n]),这样就可以求得a[1]了。

#include<stdio.h>
#include<string.h>
int N;
void solve()
{
    int i;
    double x, y, s = 0, a = 0, c;
    scanf("%lf%lf", &x, &y);
    for(i = 0; i < N; i ++)
    {
        scanf("%lf", &c);
        a += c;
        s += a;
    }
    printf("%.2f\n", -(2 * s - N * x - y) / (N + 1));
}
int main()
{
    while(scanf("%d", &N) == 1)
    {
        solve();
    }
    return 0;
}
posted on 2012-05-07 12:00  Staginner  阅读(176)  评论(0)    收藏  举报