给出一个数列ci(1<=ci<=n),然后给出数列ai中的a0和a(n+1),并给出一个公式ai = ( a(i-1) + a(i+1) ) / 2 - ci。求a1。
做了很长时间,也没弄对,最后看的别人的解题报告。。。。。
由给出公式得:2ai = a(i-1) + a(i+1) -2ci ,依次使i=1,2......n,写出n个式子,把它们相加,
得到:a1 + an = a0 + a - 2(c1 + …… + cn), 再使c的下标i=1......n,写出n个式子,把他们相加。
得到:(n + 1)a1 = na0 + an+1 - 2(nc1 + (n-1)c2 + (n-2)c3 + …… + cn)。
代码:
1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 int T, n, i; 9 double a, b, c, sum; 10 cin >> T; 11 while(T--) 12 { 13 cin >> n >> a >> b; 14 sum=0; 15 for(i=0; i<n; i++) 16 { 17 cin >> c; 18 sum+=(n-i)*c; 19 } 20 printf("%0.2lf\n", (n*a+b-2*sum) / (n+1)); 21 if(T) 22 printf("\n"); 23 } 24 return 0; 25 }