• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
若忆_star
博客园    首页    新随笔    联系   管理    订阅  订阅
hdu 2086 A1 = ?

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2086

题目大意:只怪数学不行 网上看到的觉得很好。。。。

  1. 因为:Ai=(Ai-1+Ai+1)/2 - Ci,  

    1.       A1=(A0  +A2  )/2 - C1; 
    2.       A2=(A1  +  A3)/2 - C2 , ... 
    3. =>    A1+A2 = (A0+A2+A1+A3)/2 - (C1+C2) 
    4.       2[(A1+A2)+(C1+C2)] = A0+A2+A1+A3; 
    5.       A1+A2 = A0+A3 - 2(C1+C2); 
    6. =>    A1+A2 =  A0+A3 - 2(C1+C2)  
    7. 同理可得: 
    8.       A1+A1 =  A0+A2 - 2(C1)  
    9.       A1+A2 =  A0+A3 - 2(C1+C2) 
    10.       A1+A3 =  A0+A4 - 2(C1+C2+C3) 
    11.       A1+A4 =  A0+A5 - 2(C1+C2+C3+C4) 
    12.       ... 
    13.       A1+An = A0+An+1 - 2(C1+C2+...+Cn) 
    14. ----------------------------------------------------- 左右求和 
    15.      (n+1)A1+(A2+A3+...+An) = nA0 +(A2+A3+...+An) + An+1 - 2(nC1+(n-1)C2+...+2Cn-1+Cn) 
    16.   
    17. =>   (n+1)A1 = nA0 + An+1 - 2(nC1+(n-1)C2+...+2Cn-1+Cn) 
    18.   
    19. =>   A1 = [nA0 + An+1 - 2(nC1+(n-1)C2+...+2Cn-1+Cn)]/(n+1) 

     

 

 

 

 

附上代码

 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 int main ()
 6 {
 7     int i,j,n;
 8     double sum;
 9     while (~scanf("%d",&n))
10     {
11         sum=0;
12         double a[3500],c[3500],d;
13         scanf("%lf%lf",&a[0],&a[n+1]);
14         for (i=1; i<=n; i++)
15             scanf("%lf",&c[i]);
16         a[1]=n*a[0]+a[n+1];
17         for (i = n, j = 1; i >=1&&j <= n; j++,i--)
18             sum += i*c[j];
19         a[1] = (a[1] - 2*sum)/(n+1);
20         //sum+=c[i];
21         //cout<<a[1]<<endl;
22         printf ("%.2lf\n",a[1]);
23     }
24     return 0;
25 }

 

posted on 2014-08-07 19:47  若忆_star  阅读(367)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3