题解 | #求小球落地5次后所经历的路程和第5次反弹的高度#
求小球落地5次后所经历的路程和第5次反弹的高度
http://www.nowcoder.com/practice/2f6f9339d151410583459847ecc98446
题意:
方法一:
模拟
思路:根据题意直接模拟,计算出路程总和,反弹的高度。并输出。
#include <bits/stdc++.h>
using namespace std;
int main(){
double x,sum=0;//sum表示路程总和,x表示反弹的高度
cin >> x;
sum+=x;
for(int i=1;i<5;i++){
sum+=x;//路程累加
x/=2;//反弹高度减半
}
printf("%.6f\n%.6f\n",sum,x/2);
return 0;
}
时间复杂度:
空间复杂度:![]()
方法二:
公式法
思路:将方法一中的常数级别的循环变为直接求解。
按照下图所示:
#include <bits/stdc++.h>
using namespace std;
int main(){
double x;
cin >> x;
printf("%.6f\n%.6f\n",23.0/8*x,x/32);//公式计算输出
return 0;
}
时间复杂度:
空间复杂度:![]()
文远知行公司福利 577人发布