Submission #1039062

#TimeUsernameProblemLanguageResultExecution timeMemory
1039062slivajanToys (CEOI18_toy)C++17
79 / 100
5054 ms74648 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long un;
typedef vector<un> vuc;
typedef set<un> sun;

#define vec vector
#define REP(i, a, b) for (un i = (un)a; i < (un)b; i++)
#define FEAC(i, a) for (auto&& i : a)
#define ALL(x) (x).begin(), (x).end()


map<un, sun> cache;

void answer(un a){
    if (cache.count(a) != 0) return;

    sun ret;
    ret.insert(a-1);

    for(un i = 2; i*i <= a; i++){
        if (a%i != 0) continue;

        answer(i);
        answer(a/i);

        FEAC(sa, cache[i]) FEAC(sb, cache[a/i]){
            ret.insert(sa + sb);
        }
    }

    cache[a] = ret;
}

int main(){
    un N;
    cin >> N;

    answer(N);
    sun ans = cache[N];

    cout << ans.size() << endl;
    FEAC(i, ans) cout << i << " ";
}
#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...