만드는 중입니다

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

프랙탈 수열

면접 대비

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

요약
서로 다른 양의 정수 N개로 이루어진 수열 A 중에서 정렬한 수열 B가 주어진 조건을 만족하는 경우의 수를 M으로 나눈 나머지로 구합니다.
난이도

보통10점 중 4점

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

문제

서로 다른 양의 정수 NN개로 이루어진 수열 AA가 있다. AA를 오름차순으로 정렬한 수열을 BB라 하자. BB로부터 길이 NN인 수열 CC를 다음과 같이 정의한다.

ci={bbiif 1≤bi≤N0otherwisec_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에 대해 bib_i는 BB의 ii번째 원소를, cic_i는 CC의 ii번째 원소를 나타낸다.

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

입력

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

출력

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

힌트

두 수열 XX, YY가 같기 위한 필요충분조건은 다음과 같다.

  • XX의 길이와 YY의 길이가 같다.
  • 그 길이를 NN이라 할 때, 1≤i≤N1 \le i \le N인 모든 ii에 대해 XX의 ii번째 원소 xix_i와 YY의 ii번째 원소 yiy_i가 같다.

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

예제2

  1. 예제 1

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

    입력
    1 10
    
    예상 출력
    1