AT-01. AtCoderBeginnerContest428

A. Grandma’s Footsteps

https://atcoder.jp/contests/abc428/tasks/abc428_a

毎秒Sメートルの速さでA秒間走り、その後B秒間は静止するので、X秒間では、まず、S×Aメートル進み、B秒間は0メートル進むと考えればいいので、何メートル進むか答えるための変数をansとすると、まずA回ansにSを足していきXから1づつ引いていく。その後、XからBを引き、またA回ansにSを足していくといった感じでコードを作り、Xが0以下になったら停止するようなプログラムを書けばいいと思った。

#include <bits/stdc++.h>
using namespace std;

int main(){
    int s, a, b, x, ans = 0;
    int time;
    cin >> s >> a >> b >> x;
    while(1){
        time = a;
        while(time){
            ans += s;
            time--;
            x--;
            if(x <= 0){
                cout << ans << endl;
                return 0;
            }
        }
        x -= b;
        if(x <= 0){
                cout << ans << endl;
                return 0;
        }
    }
}
Code language: C++ (cpp)