This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define sf scanf
#define pf printf
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define disc(x) sort(all(x));x.resize(unique(all(x))-x.begin());
int n,m,cur=1,vis[5000];
vector<int> p,f,nums[5000];
unordered_map<int,int> idx;
void gen_fac(int i){
if(i==sz(p)){
if(cur!=1)f.pb(cur);
return;
}
gen_fac(i+1);
cur*=p[i];
gen_fac(i+1);
cur/=p[i];
}
int main(){
sf("%d",&n);
if(n==1)pf("1\n0\n"),exit(0);
int _n=n;
for(int i=2;i*i<=n;++i){
while(n%i==0)p.pb(i),n/=i;
}
if(n!=1)p.pb(n);
n=_n;
gen_fac(0);
disc(f);
m=sz(f);
for(int i=0;i<m;++i){
idx[f[i]]=i;
}
for(int i=0;i<m;++i){
int x=f[i];
for(int j=0;j<i;++j){
if(x%f[j]==0){
int t=idx[x/f[j]];
for(int k:nums[t]){
nums[i].pb(k+f[j]-1);
}
disc(nums[i]);
}
}
nums[i].pb(x-1);
disc(nums[i]);
}
pf("%d\n",sz(nums[m-1]));
for(int i:nums[m-1])pf("%d ",i);
pf("\n");
}
Compilation message (stderr)
toy.cpp: In function 'int main()':
toy.cpp:27:4: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
27 | sf("%d",&n);
| ^
# | 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... |