#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template<typename T>
using order_set = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
#define ar array
#define ld long double
#define all(v) v.begin(), v.end()
#define int long long
#pragma GCC optimize("unroll-loops,O3,Ofast")
const int inf = 1e15 + 20;
const int maxN = 4e5 + 20;
vector<int> div(int x ){
vector<int> ret;
for(int i = 1;i * i <= x;i++){
if(x % i == 0){
ret.push_back(i);
if(x / i != i)ret.push_back(x / i);
}
}
sort(all(ret));
return ret;
}
signed main(){ios_base::sync_with_stdio(false);cin.tie(0);
int n;
cin>>n;
vector<int> A = div(n);
n = A.size();
map<int,int> mp;
for(int i = 0;i < n;i++)mp[A[i]] = i;
set<int> dp[n];
for(int i = 0;i < n;i++){
//cout<<A[i]<<' ';
for(int j = 1;j < i;j++){
if(A[i] % A[j] == 0){
int k = mp[A[i] / A[j]];
for(auto u: dp[k])dp[i].insert(u + A[j] - 1);
}
}
dp[i].insert(A[i] - 1);
}
cout<<dp[n - 1].size()<<'\n';
for(auto u: dp[n - 1])cout<<u<<" ";
}
//GLHF :D
# | 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... |