1 条题解
-
1
一天一题解,开心每一天!
#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
- 上传者