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

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

메타고니아의 정육면체 분배

면접 대비

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

요약
남은 수를 나누는 가장 큰 2의 거듭제곱으로 나눈 홀수 몫 이하의 가장 큰 3의 거듭제곱을 곱해 떼어내기를 반복한 뒤 오름차순으로 출력합니다.
난이도

쉬움10점 중 2점

유형
시뮬레이션, 수학, 정렬
정답자
아직 제출이 없습니다

문제

메타고니아에는 귀족 가문이 100개 있다. 해마다 유일자의 예언자가 그 가운데 몇 가문에 의식용 정육면체를 나누어 준다. 유일자는 분배 규칙을 두 가지 정해 두었다.

  • 어떤 가문이 정육면체를 하나 이상 받으면, 그 개수의 소인수는 2 또는 3뿐이다.
  • 같은 해에 한 가문이 a>0a > 0개, 다른 가문이 b>0b > 0개를 받으면 aa는 bb로 나누어떨어지지 않고 bb도 aa로 나누어떨어지지 않는다.

당신은 유일자의 예언자다. 앞으로 tt년 동안 해마다 나누어 줄 정육면체 개수를 미리 알고 있다. 해마다 그 해의 정육면체를 남김없이 나누어 주어야 한다.

입력

첫 줄에 앞으로의 햇수 tt가 주어진다 (1≤t≤10001 \le t \le 1000). 이어지는 tt개 줄에 ii번째 해에 나누어 줄 정육면체 개수 nin_i가 한 줄에 하나씩 주어진다 (1≤ni≤10181 \le n_i \le 10^{18}).

출력

해마다 두 줄을 출력한다. 첫 줄에는 ii번째 해에 정육면체를 하나 이상 받는 가문의 수 mim_i를 출력한다 (1≤mi≤1001 \le m_i \le 100). 둘째 줄에는 각 가문이 받는 개수를 오름차순으로 공백으로 구분해 출력한다. 이 수의 합은 nin_i와 같다.

규칙을 만족하는 분배가 여럿일 수 있으므로, 다음 절차로 만든 분배 하나만 정답으로 인정한다.

아직 나누어 주지 않은 개수를 nn이라 하고, nn이 0이 될 때까지 다음을 반복한다.

  1. nn을 나누어떨어지게 하는 가장 큰 2의 거듭제곱을 2a2^a라 하고, q=n/2aq = n / 2^a로 둔다. qq는 홀수다.
  2. 3b≤q3^b \le q를 만족하는 가장 큰 3의 거듭제곱을 3b3^b라 한다.
  3. 한 가문에 2a×3b2^a \times 3^b개를 준다.
  4. nn을 n−2a×3bn - 2^a \times 3^b로 바꾼다.

이렇게 고른 개수를 오름차순으로 정렬해 출력한다. 이 절차는 항상 두 규칙을 만족하고 가문 수가 100을 넘지 않는다.

예제3

  1. 예제 1

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

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

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