제출 #1353008

#제출 시각아이디문제언어결과실행 시간메모리
1353008NewtonabcToys (CEOI18_toy)C++20
39 / 100
15 ms3508 KiB
#include<bits/stdc++.h>
#define ll long long
const ll MOD=1e9+7;
const ll M2=676767677;
using namespace std;
unordered_map<ll,int> mp;
ll n;
vector<ll> f,ans;
ll con(ll x,ll y){
    return ((((x*M2)+y)%MOD)*67676767LL)%MOD;
}
void dfs(ll now,ll sum){
    if(mp[con(now,sum)]) return;
    mp[con(now,sum)]=1;
    if(now==n){
        ans.push_back(sum);
        return;
    }
    for(auto x:f){
        if(now*x>n) break;
        dfs(now*x,sum+(x-1));
    }
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    for(int i=1;i<=sqrt(n);i++){
        if(n%i) continue;
        f.push_back(i);
        if(n/i!=i) f.push_back(n/i);
    }
    sort(f.begin(),f.end());
    dfs(1,0);
    sort(ans.begin(),ans.end());
    ans.erase(unique(ans.begin(),ans.end()),ans.end());
    cout<<ans.size() <<"\n";
    for(auto x:ans) cout<<x <<" ";
}
#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...