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

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

우아한 소수 분해

면접 대비

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

요약
K 이하 소수들로 N을 만들되 이웃한 소수가 서로 다르도록 순서 있게 더하는 경우의 수를 구합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 정수론
정답자
아직 제출이 없습니다

문제

양의 정수 NN을 소수들의 합으로 나타내려고 합니다. G(N,K)G(N, K)를 KK 이하의 소수 pip_i만 사용해 NN을 분해하는 경우의 수로 정의합니다. 즉, NN을 다음과 같은 소수의 합으로 씁니다.

N=p1+p2+p3+⋯+pr,(pi≤K)N = p_1 + p_2 + p_3 + \cdots + p_r, \quad (p_i \le K)

가장 작은 소수는 22임에 유의하세요.

이 분해에는 한 가지 추가 규칙이 있습니다. 우아한(graceful) 규칙은 서로 이웃한 두 소수가 항상 달라야 한다는 것으로, 모든 ii에 대해 pi≠pi+1p_i \ne p_{i+1} 이어야 합니다. 이런 분해를 우아한 소수 분해(Graceful Prime Decomposition, GPD) 라고 부르며, 간단히 N=(p1,p2,p3,…,pr)N = (p_1, p_2, p_3, \ldots, p_r)로 표기합니다.

순서는 구별합니다. 예를 들어 2+52 + 5와 5+25 + 2는 서로 다른 분해로 셉니다.

예를 들어 G(7,5)=3G(7, 5) = 3입니다.

  • 7=2+3+2→(2,3,2)7 = 2 + 3 + 2 \rightarrow (2, 3, 2)
  • 7=2+5→(2,5)7 = 2 + 5 \rightarrow (2, 5)
  • 7=5+2→(5,2)7 = 5 + 2 \rightarrow (5, 2)

그리고 G(5,5)=3G(5, 5) = 3입니다.

  • 5=2+3→(2,3)5 = 2 + 3 \rightarrow (2, 3)
  • 5=3+2→(3,2)5 = 3 + 2 \rightarrow (3, 2)
  • 5=5→(5)5 = 5 \rightarrow (5)

7=2+2+37 = 2 + 2 + 3은 이웃한 2+22 + 2가 서로 같으므로 올바른 GPD가 아닙니다. 마찬가지로 (2,3,2)(2, 3, 2)는 올바르지만 (3,2,2)(3, 2, 2)는 올바르지 않습니다. 주어진 정수 NN과 KK에 대해 G(N,K)G(N, K)를 구하세요.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어집니다. 각 테스트 케이스는 두 정수 NN과 KK가 주어지는 한 줄로 이루어지며, 2≤N,K≤502 \le N, K \le 50입니다.

출력

각 테스트 케이스마다 G(N,K)G(N, K)의 값을 정수 하나로 한 줄에 출력합니다.

예제1

  1. 예제 1

    입력
    3
    7 5
    5 5
    8 2
    
    예상 출력
    3
    3
    0