Submission #1360205

#TimeUsernameProblemLanguageResultExecution timeMemory
1360205AishaToys (CEOI18_toy)C++20
100 / 100
2294 ms82840 KiB
#include <bits/stdc++.h>

using namespace std;

//#define int long long
//const int inf = 1e9;

unordered_map <int, unordered_set <int>> mp;

void sol(int n) {
    if (mp.find(n) != mp.end()) return;
    auto &s = mp[n]; s.insert(n - 1);

    for (int i = 2; i * i <= n; i ++) {
        if (n % i) continue;
        sol(i); sol(n / i);
        auto &s1 = mp[i];
        auto &s2 = mp[n / i];
        for (int a : s1) {
            for (int b : s2) {
                s.insert(a + b);
            }
        } 
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    mp[1] = {0};
    int n; cin >> n;
    sol(n);
    set <int> s; for (int i : mp[n]) s.insert(i);
    cout << s.size() << '\n';
    for (int i : s) cout << i << ' ';
    
    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...