제출 #1155121

#제출 시각아이디문제언어결과실행 시간메모리
1155121mutseCloud Computing (CEOI18_clo)C++20
0 / 100
0 ms528 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; int n; vector<int> ans, now; map<int, bool> ansDict; void calculate(){ int cnt = 0; for(auto i: now) cnt += i - 1; if(!ansDict[cnt]){ ans.push_back(cnt); ansDict[cnt] = 1; } } // n의 소인수 중 divisor보다 크거나 같은 소인수를 찾는 dfs void dfs(int n, int divisor){ // cout << "called " << n << ' ' << divisor << '\n'; if(n == 1){ // for(auto j: now) cout << j << ' '; // cout << '\n'; calculate(); return; } vector<int> divisors; for(int i = 1; i <= sqrt(n); ++i){ if(n % i == 0){ if(i * i == n) divisors.push_back(i); else{ divisors.push_back(i); divisors.push_back(n / i); } } } sort(divisors.begin(), divisors.end()); // for(auto i: divisors) cout << i << ' '; // cout << '\n'; for(auto i = divisors.begin(); i != divisors.end(); ++i){ if(*i < divisor) continue; now.push_back(*i); dfs(n / *i, *i); now.pop_back(); } } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; dfs(n, 2); sort(ans.begin(), ans.end()); cout << ans.size() << '\n'; for(auto i: ans){ cout << i << ' '; } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...