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

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

부분집합

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

요약
1부터 n까지의 수 중에서 어떤 수도 다른 수의 x배가 되지 않도록 k개를 고르는 경우의 수를 m으로 나눈 나머지를 구한다. n은 최대 10^18이다.
난이도

어려움10점 중 8점

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

문제

집합 {1,2,…,n}\{1, 2, \ldots, n\} 과 11 보다 큰 정수 xx 가 주어진다. 이 집합의 부분집합 PP 중에서 다음 성질을 만족하는 것을 생각하자: 모든 자연수 yy 에 대해 yy 와 x⋅yx \cdot y 가 동시에 PP 에 속하지는 않는다. 즉, 어떤 yy 를 잡더라도 yy 와 x⋅yx \cdot y 중 적어도 하나는 PP 에 들어 있지 않아야 한다.

이 조건을 만족하면서 원소가 정확히 kk 개인 부분집합의 개수를 구하라. 이 개수는 매우 클 수 있으므로, 그 값을 mm 으로 나눈 나머지를 출력한다.

입력

한 줄에 네 정수 nn, mm, kk, xx 가 공백 하나로 구분되어 주어진다.

  • 1≤n≤10181 \le n \le 10^{18}
  • 2≤m≤1062 \le m \le 10^6
  • 0≤k≤10000 \le k \le 1000
  • 2≤x≤102 \le x \le 10

출력

조건을 만족하는 원소 kk 개짜리 부분집합의 개수를 mm 으로 나눈 나머지를 한 줄에 출력한다.

힌트

n=6n = 6, k=3k = 3, x=2x = 2 인 경우 조건을 만족하는 부분집합은 다음 99 개이다: {1,3,4}\{1, 3, 4\}, {1,3,5}\{1, 3, 5\}, {1,4,5}\{1, 4, 5\}, {1,4,6}\{1, 4, 6\}, {1,5,6}\{1, 5, 6\}, {2,3,5}\{2, 3, 5\}, {2,5,6}\{2, 5, 6\}, {3,4,5}\{3, 4, 5\}, {4,5,6}\{4, 5, 6\}.

예제3

  1. 예제 1

    입력
    6 1234 3 2
    
    예상 출력
    9
    
  2. 예제 2

    입력
    1 1000000 0 2
    
    예상 출력
    1
    
  3. 예제 3

    입력
    4 1000 4 2
    
    예상 출력
    0