Submission #1190578

#TimeUsernameProblemLanguageResultExecution timeMemory
1190578AlgorithmWarriorToys (CEOI18_toy)C++20
79 / 100
5095 ms4652 KiB
#include <bits/stdc++.h> using namespace std; int n; int nrd; int divi[100000]; vector<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.push_back(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(){ sort(ans.begin(),ans.end()); auto it=unique(ans.begin(),ans.end()); ans.resize(distance(ans.begin(),it)); cout<<ans.size()<<'\n'; for(auto el : ans) 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...