곱 부분집합 계수 세기

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

요약
최대 500자리 이상인 n과 소수 p가 주어질 때, 기본대칭식 f(n,k)가 p로 나누어지지 않는 k의 개수를 1e9+7로 나눈 나머지로 구하는 문제입니다.
난이도

어려움10점 중 8점

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

문제

정수 nn과 kk에 대해 [n]={1,2,…,n}[n]=\{1,2,\dots,n\}이라고 하자. f(n,k)f(n,k)는 [n][n]의 모든 kk개 원소 부분집합을 고른 뒤, 각 부분집합에 들어 있는 원소들의 곱을 모두 더한 값이다. 즉,

[ f(n,k)=\sum_{S\subseteq [n],\ |S|=k}\prod_{x\in S}x. ]

또한 f(n,0)=1f(n,0)=1이다.

자연수 nn과 소수 pp가 주어질 때, 0≤k≤n0\le k\le n인 정수 kk 중에서 f(n,k)f(n,k)가 pp로 나누어떨어지지 않는 것의 개수를 구하시오.

입력

첫째 줄에 정수 nn과 소수 pp가 공백으로 구분되어 주어진다.

출력

조건을 만족하는 kk의 개수를 109+710^9+7로 나눈 나머지를 출력한다.

제한

  • 1≤n<105011 \le n < 10^{501}
  • 2≤p≤1052 \le p \le 10^5
  • pp는 소수

예제1

  1. 예제 1

    입력
    4 2
    
    예상 출력
    2