Submission #1294475

#TimeUsernameProblemLanguageResultExecution timeMemory
1294475Jawad_Akbar_JJToys (CEOI18_toy)C++20
100 / 100
704 ms255528 KiB
#include <iostream> #include <vector> #include <set> #include <algorithm> using namespace std; vector<vector<int>> vec[50]; int main(){ int n; cin>>n; vector<int> vc = {0}, v; for (int i=2;i * i<=n;i++){ while (n % i == 0) vc.push_back(i), n /= i; } if (n - 1) vc.push_back(n); vec[0] = {{}}; for (int i=1, c = 0;i<vc.size();i++){ if (vc[i] != vc[i-1]) c = 0; c++; for (int j = 0;j<vec[i-1].size();j++){ v = vec[i-1][j]; int cnt = 0; for (int k=0;k<v.size();k++){ if (k == 0 or v[k-1] != v[k]) v[k] *= vc[i], vec[i].push_back(v), v[k] /= vc[i]; cnt += v[k] == vc[i]; } if (cnt == c - 1) v.push_back(vc[i]), vec[i].push_back(v); } if (i == vc.size() - 1) continue; sort(begin(vec[i]), end(vec[i])); vec[i].resize(unique(begin(vec[i]), end(vec[i])) - vec[i].begin()); } set<int> Ans; for (auto vv : vec[vc.size() - 1]){ int sm = 0; // cout<<"new :: "; for (int j : vv) sm += j - 1;//, cout<<j<<' '; // cout<<endl; Ans.insert(sm); } cout<<Ans.size()<<'\n'; for (int i : Ans) 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...