[Atelier Blue アトリエブルー]Homeコンテストパソコン甲子園2003年本選>28問目

28問目(方程式)

問題

地球上で物体を静かに落下させたとき、空気抵抗などを考えないと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」は、切り上げを行う関数です。今回は厳密な値操作が必要そうなのでこの関数を使いました。詳細は調べてみてください。

ソースコード

お持ち帰り

C/C++

#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;
}

その他

切り上げの行い方に注意すれば大丈夫でしょう。


ページの一番上へ
前のページへ 一覧に戻る 次のページへ
初版2006-5-28
[Atelier Blue アトリエブルー]Homeコンテストパソコン甲子園2003年本選>28問目