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

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

Gwen의 선물

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

요약
각 값이 1 이상 n-1 이하인 길이 n-1 수열 가운데, 어떤 연속 부분 구간의 합도 n의 배수가 되지 않는 수열을 사전순으로 나열했을 때 k번째 수열을 구한다.
난이도

보통10점 중 7점

유형
조합론, 수학, 동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

Gwen은 대부분의 수를 좋아한다. 사실 그녀는 nn의 배수가 아닌 모든 수를 좋아한다(nn이라는 수 자체는 정말 싫어한다). 올해 친구들의 생일을 맞아 Gwen은 친구마다 n−1n-1송이의 꽃으로 이루어진 수열을 그려 주기로 했다. 각 꽃은 11개 이상 n−1n-1개 이하의 꽃잎을 가진다(양 끝 포함). nn의 배수를 싫어하기 때문에, 꽃들의 비어 있지 않은 연속한 부분수열의 꽃잎 총합은 nn의 배수가 될 수 없다. 예를 들어 n=5n = 5일 때 위의 두 그림은 조건을 만족하지만, 아래 그림은 두 번째, 세 번째, 네 번째 꽃의 꽃잎 합이 1010이므로 조건을 만족하지 않는다. (위의 두 그림은 각각 예제 입력 33과 44이다.)

Gwen은 그림들이 서로 다르기를 바라므로, 두 그림이 같은 꽃 수열을 가질 일은 없다. 이를 기록하기 위해 Gwen은 각 그림을 왼쪽부터 오른쪽으로 각 꽃의 꽃잎 수를 나열한 n−1n-1개의 수의 수열로 적었다. 그녀는 조건을 만족하는 길이 n−1n-1의 모든 수열을 사전순으로 적어 두었다. 수열 a_1,a_2,…,a_n−1a\_1,a\_2,\dots, a\_{n-1}이 b_1,b_2,…,b_n−1b\_1, b\_2, \dots, b\_{n-1}보다 사전순으로 앞선다는 것은, i<ki < k인 모든 ii에 대해 a_i=b_ia\_i = b\_i이면서 a_k<b_ka\_k < b\_k인 인덱스 kk가 존재한다는 뜻이다.

Gwen의 목록에서 kk번째 수열은 무엇인가?

입력

입력은 한 줄로 이루어지며, Gwen이 싫어하는 수 nn (2≤n≤1 0002 \leq n \leq 1\,000)과, 조건을 만족하는 모든 수열을 사전순으로 나열했을 때 찾고자 하는 수열의 번호 kk (1≤k≤10181 \leq k \leq 10^{18})가 주어진다. 이 nn에 대해 조건을 만족하는 수열이 적어도 kk개 존재함이 보장된다.

출력

Gwen의 목록에서 kk번째 수열을 출력한다.

예제4

  1. 예제 1

    입력
    4 3
    
    예상 출력
    2 1 2
    
  2. 예제 2

    입력
    2 1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    5 22
    
    예상 출력
    4 3 4 2
    
  4. 예제 4

    입력
    5 16
    
    예상 출력
    3 3 3 3