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

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

AtCoder ABC 180 C - Cream puff (灰色, 300 点)

完全に約数列挙!!!!!

問題概要

正の整数  N が与えられる。 N の正の約数をすべて出力せよ。

制約

  •  1 \le N \le 10^{12}

考えたこと

約数列挙問題そのものだった!!!!!
まったくそのまんまなものを次の記事の「3. 約数列挙」のところで書いた!

qiita.com

計算量は  O(\sqrt N)

コード

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

int main() {
    long long N;
    cin >> N;
    vector<long long> res;
    for (long long i = 1; i * i <= N; ++i) {
        if (N % i == 0) {
            res.push_back(i);
            if (i * i != N) res.push_back(N / i);
        }
    }
    sort(res.begin(), res.end());
    for (auto v : res) cout << v << endl;
}