Submission #920804

#TimeUsernameProblemLanguageResultExecution timeMemory
920804Faisal_SaqibToys (CEOI18_toy)C++17
79 / 100
5063 ms89088 KiB
#include <iostream> #include <map> #include <algorithm> #include <set> #include <vector> using namespace std; map<int,set<int>> mp; vector<int> dvv; void pos(int x) { auto it=mp.find(x); if(it!=mp.end()) return; set<int> cur={x-1}; // for(long long d=2;(d*d)<=x;d++) for(auto&d:dvv) { if(d>=x) { break; } if(x%d==0 and d!=x) { int rem=x/d; pos(rem); auto nxt=mp[rem]; for(auto j:nxt) cur.insert(j+(d-1)); if((d*d)!=x) { d=x/d; int rem=x/d; pos(rem); auto nxt=mp[rem]; for(auto j:nxt) cur.insert(j+(d-1)); d=x/d; } } } mp[x]=cur; } int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int n; cin>>n; for(int j=2;(j*j)<=n;j++) { if(n%j==0) { dvv.push_back(j); if((j*j)!=n) dvv.push_back(n/j); } } dvv.push_back(n); sort(begin(dvv),end(dvv)); pos(n); auto tlp=mp[n]; cout<<tlp.size()<<endl; for(auto j:tlp) { cout<<j<<' '; } cout<<endl; }
#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...