만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

돌 나누기

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

요약
N과 P가 주어질 때, N개의 돌을 여러 더미로 나누는 모든 방법에서 더미 크기의 곱을 P로 나눈 나머지가 서로 다른 값이 몇 가지인지 구합니다.
난이도

보통10점 중 6점

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

문제

N개의 돌이 있고, 이 돌들을 임의의 개수의 더미로 나눌 수 있다. 각 나눔의 값은 모든 더미에 있는 돌 개수의 곱을 P로 나눈 나머지이다. 주어진 N과 P에 대해 가능한 서로 다른 값은 몇 개인가?

입력

첫 줄에 테스트 케이스의 개수 T가 주어진다. 이어서 T개의 줄에 각각 정수 N과 P가 주어진다.

출력

T개의 줄을 출력한다. 각 줄에는 해당 테스트 케이스의 답을 출력한다.

제한

  • T ≤ 20
  • 2 ≤ N ≤ 70
  • 2 ≤ P ≤ 10910^9

힌트

첫 번째 테스트 케이스에서 가능한 나눔은 (1,1,1), (1,2), (2,1), (3)이며, 값은 각각 1, 2, 2, 3이다. 따라서 서로 다른 값은 3개이다.

두 번째 테스트 케이스에서는 1부터 6까지의 수가 모두 답이 되며, 다음과 같이 만들 수 있다.

  • 1=1*1*1*1*1
  • 2=2*1*1*1
  • 3=3*1*1
  • 4=4*1
  • 5=5
  • 6=2*3

예제1

  1. 예제 1

    입력
    2
    3 1000
    5 1000
    
    예상 출력
    3
    6