제출 #1190581

#제출 시각아이디문제언어결과실행 시간메모리
1190581AlgorithmWarriorToys (CEOI18_toy)C++20
79 / 100
5091 ms2712 KiB
#include <bits/stdc++.h>

using namespace std;

int n;
int nrd;
int divi[100000];
unordered_set<int>ans;

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)
        ans.insert(sum);
    else{
        int i;
        for(i=id;i<=nrd;++i)
            if(1LL*prod*divi[i]<=n && n%(prod*divi[i])==0)
                myback(prod*divi[i],sum+divi[i]-1,i);
    }
}

void write(){
    vector<int>vans;
    for(auto el : ans)
        vans.push_back(el);
    sort(vans.begin(),vans.end());
    cout<<vans.size()<<'\n';
    for(auto el : vans)
        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...