제출 #1161641

#제출 시각아이디문제언어결과실행 시간메모리
1161641LudisseyToys (CEOI18_toy)C++20
79 / 100
5094 ms63536 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; unordered_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 = 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); } } out.insert(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 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...