Submission #585010

#TimeUsernameProblemLanguageResultExecution timeMemory
585010hibikiToys (CEOI18_toy)C++11
59 / 100
1694 ms102376 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define sz(x) (int)x.size() int n; set<int> sum[100005], ans; map<pair<int,int>, bool> mp; void find(int nw, int add) { if(nw < 100005) { for(auto _: sum[nw]) ans.insert(add + _); return ; } if(mp[{nw, add}]) return ; mp[{nw,add}] = true; find(1, add + nw - 1); for(int j = 2; j * j <= nw; j++) { if(n % j == 0) { int a = j; int b = nw / j; find(a, add + b - 1); find(b, add + a - 1); } } } int main() { sum[1].insert(0); for(int i = 2; i < 100005; i++) { for(int j = 1; j * j <= i; j++) { if(i % j == 0) { int a = j; int b = i / j; for(auto _: sum[b]) { sum[i].insert(a - 1 + _); } for(auto _: sum[a]) { sum[i].insert(b - 1 + _); } } } } scanf("%d",&n); find(n, 0); printf("%d\n",sz(ans)); for(auto _: ans) printf("%d ",_); printf("\n"); return 0; }

Compilation message (stderr)

toy.cpp: In function 'int main()':
toy.cpp:56:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |     scanf("%d",&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...