練習問題4-8空中ドロップ(20点)
783 ワード
ボールはある所定の高さから自由に落下し、地面に触れた後に元の高さの半分に跳ね返り、さらに落下し、再び跳ね返り、......、と繰り返す.ボールはn回目の着地時、空中で全部でどのくらいの距離を通りますか?n回目のリバウンドの高さはいくらですか?
入力形式:
入力は1行に2つの非負の整数を与え,それぞれボールの初期高さとnであり,いずれも長整数範囲であった.
出力フォーマット:
1行目にボールがn回目に着地したときに空中を通過する距離と、n回目のリバウンドの高さを順番に出力し、その間を1つのスペースで区切って小数点を保持します.問題は計算結果が二重精度の範囲を超えないことを保証する.
サンプルを入力:
出力サンプル:
入力形式:
入力は1行に2つの非負の整数を与え,それぞれボールの初期高さとnであり,いずれも長整数範囲であった.
出力フォーマット:
1行目にボールがn回目に着地したときに空中を通過する距離と、n回目のリバウンドの高さを順番に出力し、その間を1つのスペースで区切って小数点を保持します.問題は計算結果が二重精度の範囲を超えないことを保証する.
サンプルを入力:
33 5
出力サンプル:
94.9 1.0
#include
#include
int main(){
int h0,n;
scanf("%ld %ld",&h0,&n);
double s=h0,h;
h=h0/pow(2,n);
for(int i=1;i<=n;i++){
s+=2*h0/pow(2,i);
}
if(n==0){
s=0 ;
h=0 ; //
}else{
s=s-2*h0/pow(2,n);
}
printf("%.1f %.1f",s,h);
return 0;
}