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

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

벽돌

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

요약
벽돌 N개를 먼저 둘로 나누고 양쪽을 같은 횟수로 더 쪼갤 때 만들 수 있는 소수 더미 묶음 개수를 구합니다.
난이도

어려움10점 중 8점

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

문제

게임을 끝낸 빅토르와 헥토르는 좀 더 생산적인 일, 바로 이웃집 별장 짓기를 돕기로 했습니다.

공사장에 방금 벽돌 NN개가 도착했고, 두 사람은 이 벽돌을 여러 개의 더 작은 더미로 나누어야 합니다. 먼저 둘이 함께 전체 더미 하나를 두 개의 더 작은 더미로 나눕니다. 그다음부터는 각자 따로 작업하는데, 한 번의 작업은 기존 더미 하나를 골라 비어 있지 않은 두 개의 더 작은 더미로 나누는 것입니다.

두 사람이 잠시 쉬려고 손을 멈추었을 때, 다음 두 가지를 발견하고 놀랐습니다.

  • 두 사람이 각자 혼자서 나눈 횟수가 서로 정확히 같았습니다.
  • 완성된 모든 더미의 벽돌 개수가 소수였습니다.

두 사람이 만들 수 있는 서로 다른 최종 더미 구성은 몇 가지일까요? 어떤 더미 크기에 대해 한 구성이 다른 구성보다 그 크기의 더미를 더 많이 가지고 있으면 두 구성은 서로 다른 것으로 봅니다. 다시 말해, 하나의 구성은 더미 크기들의 다중집합으로 구별됩니다.

입력

첫째 줄에 테스트 케이스의 수 ZZ (1≤Z≤101 \le Z \le 10)가 주어집니다.

둘째 줄에 나머지를 구할 정수 MM (2≤M≤1072 \le M \le 10^7)이 주어집니다.

이어지는 ZZ개의 줄에는 각각 해당 케이스에서 배달된 벽돌의 개수 NN (2≤N≤200002 \le N \le 20000)이 하나씩 주어집니다.

출력

각 테스트 케이스마다, 벽돌 NN개로 만들 수 있는 서로 다른 유효한 더미 구성의 수를 MM으로 나눈 나머지를 한 줄에 하나씩 출력합니다.

힌트

N=5N = 5일 때는 처음에 함께 더미를 22와 33(둘 다 소수)으로 나누고 이후 혼자서 나누는 작업을 전혀 하지 않는 방법이 유일하므로 답은 11입니다.

N=8N = 8일 때는 두 가지 방법이 있습니다.

  1. 더미를 33과 55(둘 다 소수)로 나누고 혼자서 나누는 작업을 하지 않습니다.
  2. 더미를 44와 44로 나눈 뒤, 각자 44짜리 더미 하나를 22와 22로 나누어 최종적으로 2,2,2,22, 2, 2, 2가 됩니다.

따라서 답은 22입니다.

예제3

  1. 예제 1

    입력
    2
    1000
    5
    8
    
    예상 출력
    1
    2
    
  2. 예제 2

    입력
    5
    1000000
    2
    3
    4
    6
    7
    
    예상 출력
    0
    0
    1
    1
    1
    
  3. 예제 3

    입력
    1
    1000000
    10
    
    예상 출력
    3