知识点与难度
模拟、思维、中等难度
描述
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?
数据范围:输入的小球初始高度满足 1≤n≤1000 ,且保证是一个整数
输入描述:
输入起始高度,int型
输出描述:
分别输出第5次落地时,共经过多少米以及第5次反弹多高。
注意:你可以认为你输出保留六位或以上小数的结果可以通过此题。
输入输出示例:
输入:
1
输出:
2.875
0.03125
我的代码:
#include <iostream>
using namespace std;
float getHeight(float height){
return height/2;
}
int main() {
float height;
float distance;
while (cin >> height) { // 注意 while 处理多个 case
distance = height;
for(int i=0;i<5;i++){
if(i!=0){
distance =distance+height*2;
}
height = getHeight(height);
}
cout<<distance<<endl;
cout<<height<<endl;
}
}
// 64 位输出请用 printf("%lld")
我的代码分析:
getHeight() 函数用于计算每次反弹得高度,height变量记录反弹高度,distance变量记录路程,循环五次。
top1代码:
#include<iostream>
using namespace std;
int main(){
double data;
while(cin >> data){
double sum = data;
double height = data;
for(int i = 2; i <= 5; ++i){
height /= 2;
sum += height * 2;
}
cout << sum << endl << height/2 << endl;
}
return 0;
}
top1代码分析:
思路基本与我的一致,代码比我简洁一些。
总结:
无