Submission #1294465

#TimeUsernameProblemLanguageResultExecution timeMemory
1294465Jawad_Akbar_JJToys (CEOI18_toy)C++20
59 / 100
323 ms327680 KiB
#include <iostream>
#include <vector>
#include <set>

using namespace std;
vector<vector<int>> vec[50];

int main(){
	int n;
	cin>>n;

	vector<int> vc = {0}, v;
	for (int i=2;i * i<=n;i++){
		while (n % i == 0)
			vc.push_back(i), n /= i;
	}
	if (n - 1)
		vc.push_back(n);

	vec[0] = {{}};
	for (int i=1, c = 0;i<vc.size();i++){
		if (vc[i] != vc[i-1])
			c = 0;
		c++;

		for (int j = 0;j<vec[i-1].size();j++){
			v = vec[i-1][j];
			int cnt = 0;
			for (int k=0;k<v.size();k++){
				if (k == 0 or v[k-1] != v[k])
					v[k] *= vc[i], vec[i].push_back(v), v[k] /= vc[i];
				cnt += v[k] == vc[i];
			}
			if (cnt == c - 1)
				v.push_back(vc[i]), vec[i].push_back(v);
		}
	}

	set<int> Ans;
	for (auto vv : vec[vc.size() - 1]){
		int sm = 0;
		for (int j : vv)
			sm += j - 1;
		Ans.insert(sm);
	}

	cout<<Ans.size()<<'\n';
	for (int i : Ans)
		cout<<i<<' ';
	cout<<'\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...