競技プログラミング用 知識集積所

ABC428A - Grandma's Footsteps

最終更新:

sport_programming

- view
管理者のみ編集可


問題


必要知識


考え方

まずは入力内容を確認。
入力内容は整数が4つなので、int型の変数を用意してcinで入力を受け取る。

さて、これらを使って答えを計算する。
今回の問題の場合、同じような行動のループなので、ループ中と最後の端数を別々に扱うとよい。

まず、ループ行動。
1回のループの内容がA秒走ってB秒休憩なので、A+B秒がその長さ。
よって、ループはX/(A+B)回繰り返される。
1回のループの間にA秒走るので、回数にAを掛ければループ中に走る秒数になる。

そして、端数。
これは、X%(A+B)秒間ある。
これがA秒以下なら端数の秒数分走るし、A秒より長ければA秒間走る。
これは、if分岐で書いてもいいし、min()※関数で書くこともできる。

これら2つの時間を足し、速さを掛けたら求める距離になる。

最後に、忘れずに結果をcoutで出力しておしまい。

解答例


注意点

掛け算割り算の順番に注意

割り算が商と余りを出す計算である場合、掛け算と割り算の順序次第で結果が変わってしまうことがある。
X/(A+B)回とA秒を掛け算するときに、A*X/(A+B)と書くとバグるので注意。

別解

ウィキ募集バナー