아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

고합성 순열

면접 대비

시간 제한2초메모리 제한512 MB

요약
1부터 n까지의 수를 한 번씩 써서 모든 앞부분 합이 합성수가 되는 순열을 찾고, 없으면 -1을 출력한다.
난이도

보통10점 중 5점

유형
수학, 정수론, 그리디, 구현
정답자
아직 제출이 없습니다

문제

양의 정수 xx가 합성수라는 것은 xx의 양의 약수가 2개보다 많다는 뜻이다. 예를 들어 4, 30, 111은 합성수이고, 1, 7, 239는 아니다.

정수 수열 p=⟨p1,p2,…,pn⟩p = \langle p_1, p_2, \ldots, p_n \rangle이 길이 nn의 순열이라는 것은 1부터 nn까지의 모든 정수를 정확히 한 번씩 포함한다는 뜻이다.

순열 p=⟨p1,p2,…,pn⟩p = \langle p_1, p_2, \ldots, p_n \rangle이 고합성이라는 것은 1부터 nn까지의 모든 ii에 대해 pp의 처음 ii개 원소의 합, 즉 p1+p2+…+pip_1 + p_2 + \ldots + p_i가 합성수라는 뜻이다.

정수 nn이 주어졌을 때, 길이 nn의 고합성 순열을 찾아라.

입력

입력은 한 줄로 이루어지며, 정수 nn이 하나 주어진다. (1≤n≤1001 \le n \le 100)

출력

길이 nn의 고합성 순열이 존재하지 않으면 정수 −1-1을 출력한다. 그렇지 않으면 p=⟨p1,p2,…,pn⟩p = \langle p_1, p_2, \ldots, p_n \rangle이 고합성 순열이 되는 nn개의 정수 p1,p2,…,pnp_1, p_2, \ldots, p_n을 출력한다.

길이 nn의 고합성 순열이 여러 개라면 그중 아무거나 출력해도 된다.

힌트

첫 번째 예제에서 순열의 첫 원소 9는 합성수이고, 처음 두 원소의 합 9+13=229 + 13 = 22는 합성수이며, 처음 세 원소의 합 9+13+6=289 + 13 + 6 = 28도 합성수이고, 이런 식으로 계속된다.

두 번째 예제에서는 길이가 2인 순열이 ⟨1,2⟩\langle 1, 2 \rangle와 ⟨2,1⟩\langle 2, 1 \rangle 두 개뿐인데, 둘 다 고합성 순열이 아니다.

예제2

  1. 예제 1

    입력
    13
    
    예상 출력
    9 13 6 5 3 2 8 4 1 12 11 10 7
    
  2. 예제 2

    입력
    2
    
    예상 출력
    -1