답안 #966140

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
966140 2024-04-19T12:21:06 Z Tob Toys (CEOI18_toy) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
#pragma GCC optimize("O3","unroll-loops")
#define ll long long
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define pb push_back
#define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
 
using namespace std;
 
typedef pair <ll, ll> pii;
 
const int C = 5007;
 
int cnt, dc;
vector <int> di[C];
unordered_map <int, int> did;
unordered_map <ll, int> sd;
vector <int> res;
 
inline ll Enc(ll x, ll y) {
	return (x << 32) + y;
}
 
void rek(int n, int sum) {
	int o = sd[Enc(n, sum)];
	if (o) return;
	sd[Enc(n, sum)] = 1;
	if (n == 1) {
		res.pb(sum);
		return;
	}
	int x = did[n];
	for (int y : di[x]) {
		rek(n/y, sum + y - 1);
	}
}
 
int main () {
	FIO;
	int n; cin >> n;
	for (int i = 1; i*i <= n; i++) {
		if (n % i) continue;
		did[i] = ++dc;
		for (int j = 2; j*j <= i; j++) {
			if (i % j) continue;
			di[dc].pb(j);
			if (j * j != i) di[dc].pb(i/j);
		}
		di[dc].pb(i);
		if (i * i != n) {
			did[n/i] = ++dc;
			for (int j = 2; j*j <= n/i; j++) {
				if ((n/i) % j) continue;
				di[dc].pb(j);
				if (j * j != n/i) di[dc].pb(n/i/j);
			}
			di[dc].pb(n/i);
		}
	}
	
	rek(n, 0);
	
	sort(all(res));
	cout << res.size() << "\n";
	
	for (auto it : res) cout << it << " ";
 
	return 0;

Compilation message

toy.cpp: In function 'int main()':
toy.cpp:70:10: error: expected '}' at end of input
   70 |  return 0;
      |          ^
toy.cpp:40:13: note: to match this '{'
   40 | int main () {
      |             ^