Submission #1190585

#TimeUsernameProblemLanguageResultExecution timeMemory
1190585AlgorithmWarriorToys (CEOI18_toy)C++20
100 / 100
1252 ms4372 KiB
#include <bits/stdc++.h>

using namespace std;

int n;
int nrd;
int divi[100000];
set<int>rasp;

void get_divis(){
    cin>>n;
    int i;
    for(i=1;i*i<n;++i)
        if(n%i==0){
            divi[++nrd]=i;
            divi[++nrd]=n/i;
        }
    if(i*i==n)
        divi[++nrd]=i;
    sort(divi+1,divi+nrd+1);
}

void myback(int prod,int sum,int id){
    if(prod==n)
        rasp.insert(sum);
    else{
        int i;
        for(i=id;i<=nrd && 1LL*prod*divi[i]<=n;++i)
            if(n%(prod*divi[i])==0)
                myback(prod*divi[i],sum+divi[i]-1,i);
    }
}

void write(){
    cout<<rasp.size()<<'\n';
    for(auto el : rasp)
        cout<<el<<' ';
}

int main()
{
    get_divis();
    myback(1,0,2);
    write();
    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...