제출 #1353674

#제출 시각아이디문제언어결과실행 시간메모리
1353674cnam9Toys (CEOI18_toy)C++20
100 / 100
1563 ms86476 KiB
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>

using namespace std;

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    // freopen("input.txt", "r", stdin);

    int n;
    cin >> n;

    vector<int> divisors;
    for (int d = 1; d * d <= n; d++) {
        if (n % d == 0) {
            divisors.push_back(d);
            if (d * d < n) {
                divisors.push_back(n / d);
            }
        }
    }
    sort(divisors.begin(), divisors.end());

    vector<set<int>> dp(divisors.size());
    dp[0] = {0};

    for (int i = 1; i < divisors.size(); i++) {
        for (int j = 0; j < i; j++) {
            if (divisors[i] % divisors[j]) continue;
            int x = divisors[i] / divisors[j] - 1;
            for (int s : dp[j]) {
                dp[i].insert(s + x);
            }
        }
    }

    cout << dp.back().size() << '\n';
    for (int s : dp.back()) {
        cout << s << ' ';
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...