제출 #920748

#제출 시각아이디문제언어결과실행 시간메모리
920748Faisal_SaqibToys (CEOI18_toy)C++17
100 / 100
2600 ms90728 KiB
#include <iostream>
#include <map>
#include <set>
using namespace std;
const int N=1e4+10;
map<int,int> mp;
set<int> cm[N];
void pos(long long&x)
{
	auto it=mp.find(x);
	if(it!=mp.end())
		return;
	int nm=mp.size();
	mp[x]=nm;
	cm[nm]={x-1};
	for(long long d=2;(d*d)<=x;d++)
	{
		if(x%d==0)
		{
			long long rem=x/d;
			pos(rem);
			auto nxt=cm[mp[rem]];
			for(auto j:nxt)
				cm[nm].insert(j+(d-1));
			if((d*d)!=x)
			{
				d=x/d;
				long long rem=x/d;
				pos(rem);
				auto nxt=cm[mp[rem]];
				for(auto j:nxt)
					cm[nm].insert(j+(d-1));				
				d=x/d;
			}
		}
	}
}
int main()
{
	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(0);
	long long n;
	cin>>n;
	pos(n);
	auto tlp=cm[mp[n]];
	cout<<tlp.size()<<'\n';
	for(auto j:tlp)
	{
		cout<<j<<' ';
	}
	cout<<'\n';
}

컴파일 시 표준 에러 (stderr) 메시지

toy.cpp: In function 'void pos(long long int&)':
toy.cpp:15:11: warning: narrowing conversion of '(x - 1)' from 'long long int' to 'int' [-Wnarrowing]
   15 |  cm[nm]={x-1};
      |          ~^~
toy.cpp:15:11: warning: narrowing conversion of '(x - 1)' from 'long long int' to 'int' [-Wnarrowing]
#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...