Submission #679136

#TimeUsernameProblemLanguageResultExecution timeMemory
679136KiprasToys (CEOI18_toy)C++17
79 / 100
5072 ms101652 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; ll sum = 0; ll mult=1; ll n; set<ll> res; vector<ll> divv; map<pair<ll, ll>, bool> hasBeen; void gen(ll k, ll last){ //cout<<k<<" "<<sum<<" "<<mult<<endl; if(hasBeen[{mult, sum}]){ return; } hasBeen[{mult, sum}]=1; if(mult==n){ res.insert(sum); return; } for(auto i : divv){ //cout<<i<<" "<<mult*i<<" "<<n%(mult*i)<<endl; if(i<last)continue; if(mult*i<=n&&n%(mult*i)==0){ sum+=i-1; mult*=i; gen(k+1, i); sum-=i-1; mult/=i; } } } int main() { ios_base::sync_with_stdio(0);cin.tie(nullptr); cin>>n; for(int i = 1; i*i <= n; i++){ if(n%i==0){ divv.push_back(i); if(n/i!=i)divv.push_back(n/i); } } gen(0, 0); cout<<res.size()<<"\n"; for(auto i : res){ cout<<i<<" "; } 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...