1 条题解

  • 1
    @ 2026-5-26 21:44:25

    一天一题解,开心每一天!

    #include<bits/stdc++.h>

    using namespace std;

    int main()

    {

    double t=0;
    
    cin>>t;
    
    double jj=t+t+t/2+t/2/2+t/2/2/2+t/2/2/2/2+t/2/2/2/2/2+t/2/2/2/2/2/2+t/2/2/2/2/2/2/2+t/2/2/2/2/2/2/2/2;
    
    double qq=t/2/2/2/2/2/2/2/2/2/2;
    
    cout<<jj<<endl<<qq;
    
    return 0;
    

    }

    大道至简,暴力万岁!

    思路

    模拟小球真实的弹跳过程:

    第一次落下:t

    第一次反弹上去:t/2

    第一次落下:t/2

    (t/2*2=t)

    第二次反弹上去:t/4

    第二次落下:t/4

    (t/4*4=t/2)

    (t+t+t/2+...)

    ……

    一直写到第 9 次反弹、第 10 次落地。

    跟着小球的运动轨迹一步一步算,完全还原物理过程。

    double jj = t

          + t  
          // 第一次反弹上去 + 第一次落下
          
          + t/2    // 第二次上去 + 第二次落下
          
          + t/2/2  
          
          + t/2/2/2  
          
          + t/2/2/2/2  
          
          + t/2/2/2/2/2  
          
          + t/2/2/2/2/2/2
          
          + t/2/2/2/2/2/2/2  
          
          + t/2/2/2/2/2/2/2/2;
    

    这一行 = 第 10 次落地时总共经过的距离

    //

    double qq = t/2/2/.../2 (一共除以10次2);

    这一行 = 第 10 次反弹的高度

    换行一下,大功告成!

    悟了吗?

    再见!

    • 1

    信息

    ID
    266
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    25
    已通过
    18
    上传者