Submission #1246640

#TimeUsernameProblemLanguageResultExecution timeMemory
1246640JovicaToys (CEOI18_toy)C++20
79 / 100
5101 ms150440 KiB
#include <bits/stdc++.h> using namespace std; set<int> ans; map<vector<array<int,2> > , bool> visited; bool sito[100000]; void f(vector<array<int,2> > v) { int p = v.size()-1; for (int i = 0;i<p;i++) { if (v[i][1] == 0) swap(v[i],v[p]),p--; } while(v.back()[1] == 0) v.pop_back(); sort(v.begin(),v.end()); if (visited[v]) return; visited[v] = true; //for (auto a: v) cout<<a[0]<< " "<<a[1]<<",";cout<<endl; int z = 0; for (int i=0;i<v.size();i++) { z += (v[i][0]-1) * v[i][1]; if (v[i][1] > 1){ v.push_back({v[i][0]*v[i][0],1}); v[i][1]-=2; f(v); v.pop_back(); v[i][1]+=2; } for (int j=i+1;j<v.size();j++) { v.push_back({v[i][0]*v[j][0],1}); v[i][1]--;v[j][1]--; f(v); v.pop_back(); v[i][1]++;v[j][1]++; } } ans.insert(z); } int main() { //f({{2,0},{3,4},{6,0},{5,1}}); ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n; cin>>n; const int B = sqrt(n); if (n == 1){ cout<<"1\n0"<<endl; return 0; } for (int i=2;i<=B;i++){ if (sito[i]) continue; for (int j=i*2;j<=B;j+=i) sito[j] = true; } //cout<<"mine\n"; vector<array<int,2> > v; for (int i=2;i<=B;i++) { if (sito[i] == false && n%i == 0) { v.push_back({i,0}); while (n%i == 0){ n/=i; v.back()[1]++; } } } if (n > 1) v.push_back({n,1}); //for (auto a: v) cout<<a[0]<<" "<<a[1]<<endl;cout<<"-\n"; f(v); cout<<ans.size()<<"\n"; for (auto a: ans) cout<<a<<" "; return 0; }
#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...