제출 #1161635

#제출 시각아이디문제언어결과실행 시간메모리
1161635LudisseyToys (CEOI18_toy)C++20
79 / 100
5093 ms74496 KiB
#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; map<pair<int,int>,bool> vis; set<int> out; void dp(int rem, int sm){ if(rem==1) { out.insert(sm); return; } if(vis.find({rem,sm})!=vis.end()) return; for (int i = 1; i < sz(poss); i++) { if(poss[i]>rem) break; if(rem%poss[i]) continue; dp(rem/poss[i],sm+poss[i]-1); } vis[{rem,sm}]=true; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; sort(all(fact)); for (int i = 1; i <= sqrt(n); i++) { if(n%i) continue; if(n/i==i) poss.push_back(i); else{ poss.push_back(i); poss.push_back(n/i); } } sort(all(poss)); dp(n,0); cout << sz(out) << "\n"; for (auto u : out) cout << u << " "; cout << "\n"; 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...