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

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

AtCoder ABC 043 A - キャンディーとN人の子供イージー (8Q, 灰色, 100 点)

等差数列の和の公式を使ってもいいし、素直に for 文を足してもいい。

問題概要

正の整数  N が与えられる。

 1 + 2 + \dots + N の値を答えよ。

解法 1

素直に for 文で足していく方法。

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

int main() {
    int N;
    cin >> N;
    
    int res = 0;  // 答えを表す辺数
    for (int i = 1; i <= N; ++i) {
        res += i;  // 1 から順に N まで足していく
    }
    cout << res << endl;
}

解法 2

等差数列の和の公式

 1 + 2 + \dots + N = \displaystyle \frac{N(N+1)}{2}

を用いる方法。N * (N + 1) / 2 を計算すればよい。

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

int main() {
    int N;
    cin >> N;
    
    cout << N * (N + 1) / 2 << endl;
}