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; }