Submission #1294473

#TimeUsernameProblemLanguageResultExecution timeMemory
1294473Jawad_Akbar_JJToys (CEOI18_toy)C++20
59 / 100
539 ms272796 KiB
#include <iostream> #include <vector> #include <set> 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]; if (vec[i].size() > 0 and vec[i][vec[i].size()-1] == vec[i][vec[i].size() - 2]) vec[i].pop_back(); } cnt += v[k] == vc[i]; } if (cnt == c - 1) v.push_back(vc[i]), vec[i].push_back(v); } } 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...