프랙탈 수열

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

요약
길이 N인 서로 다른 양의 정수 수열 중 정렬한 수열 B가 B = C를 만족하는 것의 개수를 M으로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

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

문제

NN개의 서로 다른 양의 정수로 구성된 수열 AA가 있다. 이 수열을 오름차순으로 정렬한 수열을 BB라 하자. 그리고 BB에 의해 결정되는 길이 NN의 수열 CC를 다음과 같이 정의한다.

c_i={b_b_iif 1≤b_i≤N 0otherwise c\_i = \begin{cases} {b\_{b\_{i}}} & \text{if }{1 \le b\_i \le N}\\\ {0} & \text{otherwise}\\\ \end{cases}

여기서 1≤i≤N1 \le i \le N인 모든 ii에 대해, b_ib\_i는 BB의 ii번째 원소를, c_ic\_i는 CC의 ii번째 원소를 나타낸다.

이때, B=CB = C가 되도록 하는 수열 AA를 프랙탈 수열이라고 하자. NN과 MM이 주어졌을 때, 길이가 NN인 서로 다른 프랙탈 수열의 개수를 MM으로 나눈 나머지를 구해보자.

입력

첫 번째 줄에 두 정수 N(1≤N≤103)N(1 \le N \le 10^3)과 M(1≤M≤109)M(1 \le M \le 10^9)이 공백으로 구분되어 주어진다.

출력

길이가 NN인 서로 다른 프랙탈 수열의 개수를 MM으로 나눈 나머지를 출력한다.

힌트

수열 XX, YY에 대하여 두 수열이 같기 위한 필요충분조건은 다음과 같다.

  • XX의 길이와 YY의 길이가 동일하다.
  • 그 길이를 NN이라 할 때, 1≤i≤N1 \le i \le N인 모든 ii에 대하여 XX의 ii번째 원소를 x_ix\_i, YY의 ii번째 원소를 y_iy\_i이라고 할 때, x_i=y_ix\_i = y\_i이다.

만약 두 수열 XX, YY가 같다면, 이를 X=YX = Y로 표기한다.

예제2

  1. 예제 1

    입력
    2 10
    
    예상 출력
    2
    
  2. 예제 2

    입력
    1 10
    
    예상 출력
    1