Submission #1242857

#TimeUsernameProblemLanguageResultExecution timeMemory
1242857chikien2009Toys (CEOI18_toy)C++20
59 / 100
5091 ms1484 KiB
#include <bits/stdc++.h>

using namespace std;

void setup()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}

int n;
vector<int> fac;
set<int> s;

inline void Form(int ind, int rem, int num)
{
    if (rem == 1 || ind == fac.size())
    {
        if (rem == 1)
        {
            s.insert(num);
        }
        return;
    }
    Form(ind + 1, rem, num);
    while (rem % fac[ind] == 0)
    {
        rem /= fac[ind];
        num += fac[ind] - 1;
        Form(ind + 1, rem, num);
    }
}

int main()
{
    setup();

    cin >> n;
    for (int i = 2; i * i <= n; ++i)
    {
        if (n % i == 0)
        {
            fac.push_back(i);
            if (i * i != n)
            {
                fac.push_back(n / i);
            }
        }
    }
    fac.push_back(n);
    sort(fac.begin(), fac.end());
    Form(0, n, 0);
    cout << s.size() << "\n";
    for (auto & i : s)
    {
        cout << i << " ";
    }
    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...