Submission #1353691

#TimeUsernameProblemLanguageResultExecution timeMemory
1353691cnam9Toys (CEOI18_toy)C++20
100 / 100
175 ms16928 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>

using namespace std;

vector<int> divisors;
vector<int> answer;

void recur(int n, int s, int *it) {
    answer.push_back(s + n - 1);
    for (;; ++it) {
        int d = *it;
        if (d * d > n) break;
        if (n % d) continue;
        recur(n / d, s + d - 1, it);
    }
}

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

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

    int n;
    cin >> n;

    if (n == 1) {
        cout << "1\n0";
        return 0;
    }

    for (int d = 2; d * d <= n; d++) {
        if (n % d == 0) {
            divisors.push_back(d);
        }
    }
    divisors.push_back(sqrt(n) + 1);
    recur(n, 0, &divisors[0]);

    sort(answer.begin(), answer.end());
    auto end = unique(answer.begin(), answer.end());

    cout << end - answer.begin() << '\n';
    for (auto it = answer.begin(); it != end; ++it) {
        cout << *it << ' ';
    }

    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...