地球上で物体を静かに落下させたとき、空気抵抗などを考えないとt秒後の物体の速度vと、落下した距離yは次の式で表せます。
v = 9.8t
y = 4.9t2
ある人が、建物からガラスの玉を落下させて割れるかどうかを調べています。
入力データとして玉が割れるのに必要な速度が与えられるので何階以上から落とせばその玉が割れるかを求め出力するプログラムを作成する。
なお、建物N階の高さは5*N-5で与えられる。
玉が割れるのに必要な最低の速度(実数)
そこから落とすと玉が割れる最低の階数(整数)
20.1
6
方程式を解きます。
N = (v*v /19.6 + 5 ) / 5
ですが、今回は小数部を切り上げなければならないので次の式を使います。
N = (int)ceil((v*v /19.6 + 5) / 5 )
N = (int)ceil(v*v /19.6 / 5 + 1)
更に計算量とコード量を減らすために2行目の式を使います。
今回使った「ceil」は、切り上げを行う関数です。今回は厳密な値操作が必要そうなのでこの関数を使いました。詳細は調べてみてください。
#include <stdio.h> #include <math.h> int main(){ double v; int n; scanf("%lf",&v); n = (int)ceil(v*v /19.6 / 5 + 1); printf("%d\n",n); return 0; }
切り上げの行い方に注意すれば大丈夫でしょう。