uva 10014 Simple calculations

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=955

根据递推公式推倒出a1的公式。

a1=(n*a0+an+1-2*(n*c1+(n-1)*c2+...+cn))/(n+1);

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define maxn 50000
 5 using namespace std;
 6 
 7 double a1,a2;
 8 double c[maxn];
 9 int t;
10 int n;
11 
12 int main()
13 {
14     scanf("%d",&t);
15     while(t--)
16     {
17         scanf("%d",&n);
18         scanf("%lf%lf",&a1,&a2);
19         double sum=n*a1+a2;
20         for(int i=1; i<=n; i++)
21         {
22             scanf("%lf",&c[i]);
23             sum-=2.0*(n+1-i)*c[i];
24         }
25         printf("%.2lf\n",sum/(n+1));
26         if(t!=0) printf("\n");
27     }
28     return 0;
29 }
View Code

 

posted @ 2014-10-11 22:32  null1019  阅读(118)  评论(0编辑  收藏  举报