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

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

체스판

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

요약
1부터 n까지의 순열 중 i번째 룩이 i번째 행과 i번째 열을 모두 피하는 배치의 수를 m으로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

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

문제

바이테아사르(Byteasar)는 체스 퍼즐을 좋아합니다. 그는 오랫동안 체스 잡지를 구독해 왔고, 최신 호에는 다음과 같은 퍼즐이 실려 있습니다.

n×nn \times n 크기의 체스판이 주어진다. 이 체스판 위에 룩(rook) nn개를 놓되, 어떤 두 룩도 서로 공격하지 않고(즉 같은 행이나 같은 열을 공유하지 않고), 모든 ii에 대해 ii번째 룩이 ii번째 행에도 ii번째 열에도 놓이지 않도록 하는 방법은 몇 가지인가? 룩과 행, 열은 모두 11부터 nn까지 번호가 매겨져 있다. 답은 mm으로 나눈 나머지로 구한다.

바이테아사르에게 "13수 만에 체크메이트" 같은 퍼즐은 식은 죽 먹기지만, 이 새로운 유형의 퍼즐은 무척 어려워 보입니다. 그를 도와줄 수 있나요?

입력

첫째 줄에 두 정수 nn과 mm이 공백으로 구분되어 주어진다 (1≤n≤10181 \le n \le 10^{18}, 1≤m≤1061 \le m \le 10^{6}).

출력

가능한 룩 배치의 수를 mm으로 나눈 나머지를 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    3 120
    
    예상 출력
    4
    
  2. 예제 2

    입력
    1 120
    
    예상 출력
    0
    
  3. 예제 3

    입력
    2 120
    
    예상 출력
    1
    
  4. 예제 4

    입력
    4 120
    
    예상 출력
    81