Submission #920795

#TimeUsernameProblemLanguageResultExecution timeMemory
920795Faisal_SaqibToys (CEOI18_toy)C++17
79 / 100
5084 ms89040 KiB
#include <iostream>
#include <map>
#include <algorithm>
#include <set>
#include <vector>
using namespace std;
map<int,set<int>> mp;
vector<int> dvv;
void pos(int x)
{
	auto it=mp.find(x);
	if(it!=mp.end())
		return;
	set<int> cur={x-1};
	// for(long long d=2;(d*d)<=x;d++)
	for(auto&d:dvv)
	{
		if(x%d==0 and d!=x)
		{
			int rem=x/d;
			pos(rem);
			auto nxt=mp[rem];
			for(auto j:nxt)
				cur.insert(j+(d-1));
			if((d*d)!=x)
			{
				d=x/d;
				int rem=x/d;
				pos(rem);
				auto nxt=mp[rem];
				for(auto j:nxt)
					cur.insert(j+(d-1));				
				d=x/d;
			}
		}
	}
	mp[x]=cur;
}
int main()
{
	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(0);
	int n;
	cin>>n;
	for(int j=2;(j*j)<=n;j++)
	{
		if(n%j==0)
		{
			dvv.push_back(j);
			if((j*j)!=n)
				dvv.push_back(n/j);
		}
	}
	dvv.push_back(n);
	sort(begin(dvv),end(dvv));
	pos(n);
	auto tlp=mp[n];
	cout<<tlp.size()<<endl;
	for(auto j:tlp)
	{
		cout<<j<<' ';
	}
	cout<<endl;
}
#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...