【AtCoder】ABC 428 A - Grandma's Footsteps
実行時間制限: 2 sec / メモリ制限: 1024 MiB / Difficulty: 23 / NoviSteps: 6Q / 配点: 150 点
問題概要
高橋君はチャイムが鳴った直後から、以下の動作を繰り返し行う。
- 毎秒 メートルの速さで 秒間走る。その後の 秒間は静止する。
チャイムが鳴ってから 秒が経過するまでに、高橋君は合計何メートル走るか求めよ。
制約
- 入力される値はすべて整数
考察
秒のサイクルで走る距離と、その余りの時間で走る距離を分けて計算すればよい。
前者は 、後者は と表せる。
実装例
CPP
1.#include <bits/stdc++.h>2.using namespace std;3. 4.template <class T1, class T2>5.inline auto div_floor(T1 a, T2 b)6.{7. if (b < 0)8. a *= -1, b *= -1;9. if (a >= 0)10. return a / b;11. else12. return (a + 1) / b - 1;13.}14. 15.// ======================================== //16. 17.int main()18.{19. int S, A, B, X;20. cin >> S >> A >> B >> X;21. 22. int ans = S * A * div_floor(X, A + B);23. int rem = X % (A + B);24. ans += S * min(rem, A);25. 26. cout << ans << endl;27. 28. return 0;29.}https://atcoder.jp/contests/abc428/submissions/70218364
atcoder.jp
実装時間: 5 分以内
コメント
周期算、最近の ABC の 150 点問題でよく見られる。





