けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 340 A - Arithmetic Progression (7Q, 灰色, 100 点)

for 文を使って、等差数列を実現する!

問題概要

初項が  A、末項が  B、公差が  D であるような等差数列を出力せよ。

なお、そのような等差数列が存在する入力のみが与えられる。

考えたこと

等差数列の中でも、次のようなものは我々はいつも実装している!

 0, 1, 2, \dots, N-1

これは次のような for 文で書ける。

for (int i = 0; i < N; i++) {

}

今回出力したい数列は、次のように、 D ずつ大きくなっていくものである。

 A, A + D, A + 2D, A + 3D, \dots, B

これは、上の for 文の更新部分「i++」を少し変更して、「i += D」とすることで実現できるのだ。また、for 文の初期値と継続条件も変更しよう。

具体的には、次のような for 文を書けば良い。


  • 初期値:i = A
  • 継続条件:i <= B
  • 更新式:i += D

コード

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

int main() {
    int A, B, D;
    cin >> A >> B >> D;
    for (int i = A; i <= B; i += D) {
        cout << i << " ";
    }
    cout << endl;
}