首页 > 学院 > 开发设计 > 正文

HDU 2086 A1=? [数学问题]

2019-11-08 01:46:01
字体:
来源:转载
供稿:网友

      A1 = ?

Time Limit: 5000/1000 MS (java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7893    Accepted Submission(s): 4893PRoblem Description有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).若给出A0, An+1, 和 C1, C2, .....Cn.请编程计算A1 = ? Input输入包括多个测试实例。对于每个实例,首先是一个正整数n,(n <= 3000); 然后是2个数a0, an+1.接下来的n行每行有一个数ci(i = 1, ....n);输入以文件结束符结束。 Output对于每个测试实例,用一行输出所求得的a1(保留2位小数). Sample Input
150.0025.0010.00250.0025.0010.0020.00 Sample Output
27.5015.00 此题是标准的数学题,从题目条件不难想到A1的表达式形式为i1*A0+i2*An+i3*C1…+i(n+2)*Cn根据A1=[A0+A2-2C1]/2A1=[2A0+A3-2(2C1+1C2)]/3可以推知A1=[nA0+A(n+1)-2(nC1+(n-1)C2+...+2C(n-1)+Cn)]/(n+1)以下是代码:#include<stdio.h>int main(){    double a[3002],c[3002],sum;    int n,i,j;    while(~scanf("%d",&n)){        scanf("%lf%lf",&a[0],&a[n+1]);        for(i=1;i<=n;i++){            scanf("%lf",&c[i]);        }        a[1]=n*a[0]+a[n+1];        sum = 0;        for(i=n,j=1;i>=1&&j<=n;j++,i--){            sum+=i*c[j];        }        a[1]=(a[1]-2*sum)/(n+1);        printf("%.2lf/n",a[1]);    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表