2와 3의 거듭제곱 합

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

요약
N을 2^a*3^b 형태의 항들의 합으로 나타내되 어떤 항도 다른 항을 나누지 않도록 구성하는 문제입니다 (최대 1000개 질의, N은 2^31 미만).
난이도

보통10점 중 6점

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

문제

모든 자연수 N은 2^a * 3^b 꼴의 항들의 합으로 나타낼 수 있다. 여기서 a와 b는 0 이상의 정수이다.

표현에 포함된 서로 다른 두 항 사이에는 약수와 배수 관계가 있으면 안 된다. 즉, 한 항이 다른 항을 나누는 경우가 없어야 한다.

정수 N이 주어졌을 때, 위 조건을 만족하도록 N을 2^a * 3^b 꼴 항들의 합으로 나타내는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. (1 <= T <= 1,000)

이후 T개의 줄에 각각 정수 N이 주어진다. (1 <= N < 2^31)

출력

각 테스트 케이스마다 먼저 항의 개수 M을 한 줄에 출력한다.

다음 M개의 줄에는 각 항을 나타내는 두 정수 a b를 공백으로 구분해 출력한다. 이 줄은 항 2^a * 3^b를 뜻한다.

출력한 항들의 합은 N이어야 하며, 출력한 어떤 두 항도 서로 약수와 배수 관계이면 안 된다.

예제1

  1. 예제 1

    입력
    6
    1
    7
    31
    7776
    531441
    123456789
    
    예상 출력
    1
    0 0
    2
    2 0
    0 1
    3
    4 0
    0 2
    1 1
    1
    5 5
    1
    0 12
    8
    3 13
    4 12
    2 15
    7 8
    9 6
    0 16
    10 5
    15 2