HDU 2086 A1=?


  • 原题链接: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
    然后就没有然后了......




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值