- 原题链接:Here!
- 推理公式:
An = (1/2)An-1 + (1/2)An+1 - Cn
An-1 = (2/3)An-2 + (1/3)An+1 - (2/3)Cn - (4/3)Cn-1
An-2 = (3/4)An-3 + (1/4)An+1 - (1/2)Cn - Cn-1 - (3/2)Cn-2
An-3 = (4/5)An-4 + (1/5)An+1 - (2/5)Cn - (4/5)Cn-1 - (6/5)Cn-2 - (8/5)Cn-3
......
接着:
A1 = (n/(n+1))A0 + (1/(n+1))An+1 - (2/(n+1))Cn - (4/(n+1))Cn-1 - ... -(2n/(n+1))C1
= 1/(n+1)*[ nA0 + An+1 - 2(Cn + 2Cn-1 + 3Cn-2 + ... + nC1) ]
- CODE:
#include<cstdio> using namespace std; int main(){ int n; while(scanf("%d",&n)!=EOF){ double s,e,c,sum=0; scanf("%lf%lf",&s,&e); for(int i=1;i<=n;i++){ scanf("%lf",&c); sum += (n-i+1)*c; } printf("%.2lf\n",(n*s+e-2*sum)/(n+1)); } return 0; }
- 思考:
第一次做时推错了公式
A1 = (A0+A2)/2-C1
A2 = (A1+A3)/2-C2
A3 = (A2+A4)/2-C3
A4 = (A3+A5)/2-C4
......
An-2= (An-3+An-1)/2-Cn-2
An-1= (An-2+An)/2-Cn-1
An = (An-1+An+1)/2-Cn
然后将等式前后分别相加
San = (A0+A1+An+An+1)/2+(A2+A3+A4+A5...+An-1)-Scn
A1+An = A0+An+1-2*Scn
然后就没有然后了......
HDU 2086 A1=?
最新推荐文章于 2020-04-28 17:27:54 发布