만드는 중입니다

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

부분공간

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

요약
F_q 위의 n차원 벡터공간에서 차원이 k인 부분공간의 개수를 소수 p로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

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

문제

bobo는 선형대수의 열성 팬이다. 그는 Fqn\mathbb{F}_q^n에서 kk차원 부분공간의 개수를 pp로 나눈 나머지로 세려고 한다.

선형대수에 익숙하지 않은 사람을 위해 정의를 적는다.

  • Fq\mathbb{F}_q는 덧셈과 곱셈을 qq로 나눈 나머지로 정의한 집합 {0,1,…,q−1}\{0, 1, \dots, q - 1\}이다;
  • Fqn\mathbb{F}_q^n은 nn차원 벡터 공간 {(x1,x2,…,xn):x1,x2,…,xn∈Fq}\{(x_1, x_2, \dots, x_n) : x_1, x_2, \dots, x_n \in \mathbb{F}_q\}이다;
  • 부분집합 K⊆FqnK \subseteq \mathbb{F}_q^n이 모든 p,q∈K\mathbf{p}, \mathbf{q} \in K에 대해 p+q∈K\mathbf{p} + \mathbf{q} \in K를 만족하면, 그리고 그때에만 KK는 부분공간이다;
  • 부분공간 KK의 차원은 KK의 가장 큰 독립 부분집합의 원소 개수이다;
  • 부분집합 {p1,p2,…,pk}⊆K\{\mathbf{p}_1, \mathbf{p}_2, \dots, \mathbf{p}_k\} \subseteq K는 c1⋅p1+c2⋅p2+⋯+ck⋅pk=0c_1 \cdot \mathbf{p}_1 + c_2 \cdot \mathbf{p}_2 + \dots + c_k \cdot \mathbf{p}_k = 0의 해가 c1=c2=⋯=ck=0c_1 = c_2 = \dots = c_k = 0뿐일 때 독립이라고 한다.

입력

네 정수 q,n,k,pq, n, k, p가 주어진다 (2≤q≤1092 \leq q \leq 10^9, 1≤k≤n≤1091 \leq k \leq n \leq 10^9, 2≤p≤2⋅1052 \leq p \leq 2 \cdot 10^5). pp와 qq가 소수임이 보장된다.

출력

부분공간의 개수를 나타내는 정수 하나를 출력한다.

예제1

  1. 예제 1

    입력
    2 3 2 100003
    
    예상 출력
    7