3교시: 수학

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

요약
1로 끝나는 길이 N의 우박수열 개수를 세고 가능한 첫째 항을 오름차순으로 출력한다.
난이도

보통10점 중 4점

유형
백트래킹, 수학, 재귀, 완전 탐색
정답자
아직 제출이 없습니다

문제

짐비는 수학 시간에 우박수열에 대해 배운 뒤, 길이가 NN인 우박수열 A_1,A\_1, A_2,A\_2, A_3,A\_3, ⋯ ,\cdots, A_NA\_N을 만들려고 합니다.

우박수열은 다음 조건을 만족하는 수열 AA를 의미합니다:

  • 1≤i<N1 \leq i \lt N인 양의 정수 ii에 대하여, A_iA\_i가 짝수라면 A_i+1=A_i2\displaystyle A\_{i+1}=\frac{A\_i}{2}, 홀수라면 A_i+1=3A_i+1A\_{i+1}=3A\_i+1입니다.
  • A_N=1A\_N = 1입니다. 또한, 1≤i<N1 \le i < N이면 A_i≠1A\_i \neq 1입니다.

NN이 주어질 때 가능한 길이가 NN인 우박수열의 개수를 구하고, 가능한 우박수열의 첫 번째 원소 A_1A\_1을 오름차순으로 출력해 주세요.

입력

첫 번째 줄에 우박수열의 길이를 나타내는 정수 NN이 주어집니다. (1≤N≤55)(1 \leq N \leq 55)

출력

첫 번째 줄에 길이가 NN인 서로 다른 우박수열의 개수 kk를 출력해 주세요.

두 번째 줄부터 kk개의 줄에 걸쳐, 길이가 NN인 우박수열의 첫 번째 원소 A_1A\_1을 한 줄에 하나씩, 오름차순으로 출력해 주세요.

예제1

  1. 예제 1

    입력
    8
    
    예상 출력
    4
    3
    20
    21
    128