서로 다른 소수의 합

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

요약
1120 이하의 소수들 중에서 서로 다른 k개를 골라 합이 n이 되는 방법의 수를 구하는 문제입니다.
난이도

보통10점 중 5점

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

문제

양의 정수는 서로 다른 소수의 합으로 나타낼 수 있다. 두 정수 nn과 kk가 주어졌을 때, nn을 서로 다른 kk개의 소수의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 덧셈의 순서만 다른 경우(예: 3+53+5와 5+35+3)는 같은 방법으로 보고 한 가지로 센다.

예를 들어 n=24n=24, k=3k=3이면 방법은 {2,3,19}\{2, 3, 19\}와 {2,5,17}\{2, 5, 17\}의 2가지이다. n=24n=24, k=2k=2이면 {5,19}\{5, 19\}, {7,17}\{7, 17\}, {11,13}\{11, 13\}의 3가지이다. n=2n=2, k=1k=1이면 {2}\{2\}의 1가지이다. n=1n=1, k=1k=1이면 1은 소수가 아니므로 답은 0이다. 또한 서로 다른 두 소수의 합이 4가 되는 경우는 없으므로 n=4n=4, k=2k=2의 답도 0이다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 한 줄에 두 정수 nn과 kk가 공백으로 구분되어 주어진다. (n≤1120n \le 1120, k≤14k \le 14)

출력

각 테스트 케이스마다 방법의 수를 한 줄에 하나씩 출력한다. 정답은 항상 2312^{31}보다 작다.

예제1

  1. 예제 1

    입력
    12
    24 3
    24 2
    2 1
    1 1
    4 2
    18 3
    17 1
    17 3
    17 4
    100 5
    1000 10
    1120 14
    
    예상 출력
    2
    3
    1
    0
    0
    2
    1
    0
    1
    55
    200102899
    2079324314