제출 #927935

#제출 시각아이디문제언어결과실행 시간메모리
927935TAhmed33Toys (CEOI18_toy)C++98
100 / 100
1661 ms86864 KiB
#include <bits/stdc++.h> using namespace std; int main () { int n; cin >> n; vector <int> divs; map <int, int> cmp; for (int i = 1; i * i <= n; i++) { if (n % i == 0) { if (i * i != n) divs.push_back(n / i); divs.push_back(i); } } int s = 0; sort(divs.begin(), divs.end()); for (int i = 0; i < (int)divs.size(); i++) { cmp[divs[i]] = i; } s = divs.size(); set <int> dp[s]; dp[0].insert(0); for (int i = 1; i < s; i++) { for (int j = 1; j * j <= divs[i]; j++) { if (divs[i] % j) continue; for (auto k : dp[cmp[j]]) { dp[i].insert(k + divs[i] / j - 1); } if (j == 1 || j * j == divs[i]) continue; int l = divs[i] / j; for (auto k : dp[cmp[l]]) { dp[i].insert(k + divs[i] / l - 1); } } } if (n == 1) { cout << "1\n0" << '\n'; return 0; } cout << (int)dp[s - 1].size() << '\n'; for (auto i : dp[s - 1]) { if (i) 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...