제출 #967007

#제출 시각아이디문제언어결과실행 시간메모리
967007Charizard2021Toys (CEOI18_toy)C++17
59 / 100
5005 ms9488 KiB
#include<bits/stdc++.h> using namespace std; vector<int> factors; vector<vector<int> > adj; vector<set<int> > dp; vector<bool> visited; void dfs(int u){ if(u == 0){ dp[u].insert(0); } for(int v : adj[u]){ if(!visited[v]){ dfs(v); } for(int y : dp[v]){ dp[u].insert(factors[u]/factors[v] - 1 + y); } } } int main(){ int n; cin >> n; for(int i = 1; i <= sqrt(n); i++){ if(n % i == 0){ factors.push_back(i); if(i * i != n){ factors.push_back(n/i); } } } sort(factors.begin(), factors.end()); adj.resize((int)factors.size()); visited.resize((int)factors.size()); for(int i = 0; i < (int)factors.size(); i++){ for(int j = i + 1; j < (int)factors.size(); j++){ if(factors[j] % factors[i] == 0){ adj[j].push_back(i); } } } dp.resize((int)factors.size()); dfs((int)factors.size() - 1); cout << dp.back().size() << "\n"; for(int i : dp.back()){ cout << i << " "; } cout << "\n"; }
#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...