제출 #975334

#제출 시각아이디문제언어결과실행 시간메모리
975334IBoryToys (CEOI18_toy)C++17
100 / 100
675 ms86372 KiB
#include <bits/stdc++.h>
#include <unordered_set>
using namespace std;

const int MAX = 111111;
vector<int> D;
unordered_set<int> S[MAX];

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

	for (int i = 1; i * i <= N; ++i) {
		if (N % i) continue;
		D.push_back(i);
		if (i * i != N) D.push_back(N / i);
	}
	sort(D.begin(), D.end());
	S[0].insert(0);

	for (int i = 0; i < D.size(); ++i) {
		for (int j = 0; j < i; ++j) {
			if (D[i] % D[j]) continue;
			for (int n : S[j]) S[i].insert(n + D[i] / D[j] - 1);
		}
	}

	vector<int> ans;
	for (int n : S[D.size() - 1]) ans.push_back(n);
	sort(ans.begin(), ans.end());
	cout << ans.size() << '\n';
	for (int n : ans) cout << n << ' ';
	return 0;
}

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

toy.cpp: In function 'int main()':
toy.cpp:21:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |  for (int i = 0; i < D.size(); ++i) {
      |                  ~~^~~~~~~~~~
#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...