#include <bits/stdc++.h>
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
using namespace std;
vector<pair<int,int>> fact;
vector<int> poss;
unordered_map<int,unordered_map<int,int>> vis;
unordered_set<int> out;
void dp(int rem, int sm){
if(rem==1) {
out.insert(sm);
return;
}
if(vis[rem].find(sm)!=vis[rem].end()) return;
for (int i = 2; i <= sqrt(rem); i++)
{
if(rem%i) continue;
if(rem/i==i) dp(rem/i,sm+i-1);
else{
dp(rem/i,sm+i-1);
dp(rem/(rem/i),sm+(rem/i)-1);
}
}
dp(1,sm+rem-1);
vis[rem][sm]=true;
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr);
int n; cin >> n;
sort(all(fact));
dp(n,0);
cout << sz(out) << "\n";
vector<int> ot;
for (auto u : out) ot.push_back(u);
sort(all(ot));
for (auto u : ot) cout << u << " ";
cout << "\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |