Submission #1039055

#TimeUsernameProblemLanguageResultExecution timeMemory
1039055slivajanToys (CEOI18_toy)C++17
79 / 100
5077 ms70836 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;

sun answer(un a){
    if (cache.count(a) != 0) return cache[a];

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

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

        sun la = answer(i);
        sun lb = answer(a/i);

        FEAC(sa, la) FEAC(sb, lb){
            ret.insert(sa + sb);
        }
    }

    cache[a] = ret;
    return ret;
}

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

    sun ans = answer(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...