제출 #948371

#제출 시각아이디문제언어결과실행 시간메모리
948371MinbaevToys (CEOI18_toy)C++17
100 / 100
3838 ms70900 KiB
#include <bits/stdc++.h>

using namespace std;
 
int n,m,k;
vector<int>ans;
vector<int>di;
unordered_map<int,map<int,bool>>vis;
int sum = 0;

void dfs(int x){
	
	vis[x][sum] = 1;
	
	if(x == 1){
		ans.push_back(sum);
		return;
	}
	
	int to = x;
	
	if(x % to == 0 && vis[x/to][sum+to-1] == 0){
			sum = sum + to - 1;
			dfs(x/to);
			sum = sum - to + 1;
	}
	
	for(to = 2; to*to <= x;to++){
		
		if(x % to == 0 && vis[x/to][sum+to-1] == 0){
			sum = sum + to - 1;
			dfs(x/to);
			sum = sum - to + 1;
		}
		
	}
	
}

void solve(){
	
	cin >> n;
			
	dfs(n);
	
	sort(ans.begin(),ans.end());
	
	cout<<ans.size()<<"\n";
	for(auto to:ans)cout << to << " ";
	
}
/*
 
*/
signed main()
{	
	ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
	int tt=1;//cin>>tt>>n;
	while(tt--)solve();
 
}
#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...