E(LCS⁡)\mathbb{E}\left(\operatorname{LCS}\right)

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

요약
K가 나올 때까지 무작위로 수를 뽑아 만든 증가 수열 M개의 LCS 길이 기댓값을 K=1부터 N까지 모두 구해 출력한다.
난이도

어려움10점 중 9점

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

문제

숭실대학교를 다니는 근형이는 고려대학교 동아리 MatKor의 부원으로도 활동하고 있다. 근형이는 MatKor에서 진행하는 <그 유명한 LCS 시리즈 모두 풀어 보기> 세미나를 들었다.

근형이는 문득 평소에 숭실대학교 동아리 SCCC에서 즐기는 수열 만들기 놀이에 LCS를 접목하면 재미있겠다는 생각이 들었다. 수열 만들기 놀이는 다음과 같다. 먼저 양의 정수 KK를 하나 정하고, 아래 행동을 놀이에 참여하는 MM명의 부원들이 독립적으로 수행한다.

  • 빈 종이가 하나 주어진다. 이 종이에 KK가 적힐 때까지 아래를 반복한다.

    • 11 이상 KK 이하의 정수 중 하나를 균등한 확률로 하나 뽑는다.
    • 종이에 적혀있는 모든 수보다 뽑은 수가 더 크면 그 수를 맨 뒤에 적는다.

수열 만들기 놀이가 끝난 후, MM명의 부원들이 각자 길이 KK 이하의 수열을 하나씩 가지게 될 것이다. 이 수열을 A_1,A_2,⋯ ,A_MA\_1,A\_2,\cdots ,A\_M이라고 하자.

근형이는 LCS⁡(A_1,A_2,⋯ ,A_M)\operatorname{LCS}\left( A\_1,A\_2,\cdots ,A\_M \right)의 길이의 기댓값을 f(K,M)f\left( K,M \right)이라 할 때, f(1,M),f(2,M),⋯ ,f(N,M)f\left( 1,M \right) ,f\left( 2,M \right) ,\cdots ,f\left( N,M \right)의 값을 모두 알고 싶다. 근형이를 도와 답을 구해보자.

여기서 LCS⁡(A_1,A_2,⋯ ,A_M)\operatorname{LCS}\left( A\_1,A\_2,\cdots ,A\_M \right)는 모든 A_iA\_i의 부분 수열 중 가장 긴 공통된 부분 수열을 의미하며, 부분 수열은 주어진 수열에서 순서를 바꾸지 않고 00개 이상의 원소를 삭제해서 얻을 수 있는 수열을 의미한다.

입력

첫 번째 줄에 양의 정수 N(1≤N≤106)N(1\le N\le 10^6)과 M(1≤M≤1018)M(1\le M\le 10^{18})이 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 f(1,M),f(2,M),⋯ ,f(N,M)f\left( 1,M \right) ,f\left( 2,M \right) ,\cdots ,f\left( N,M \right)의 길이의 기댓값을 각각 109+710^9+7로 나눈 나머지를 공백으로 구분하여 출력한다.

기약 분수 pq(p≥0,q>0,gcd⁡(p,q)=1)\frac{p}{q}(p\ge 0,q>0,\gcd(p,q) =1)를 MM으로 나눈 나머지는 q−1q^{-1}가 q⋅q−1≡1(modM)q\cdot q^{-1}\equiv 1\pmod M을 만족하는 정수, 즉 qq의 MM에 대한 모듈로 곱셈 역원일 때, p⋅q−1(modM)p\cdot q^{-1}\pmod M로 정의한다. 만약 정수일 경우 q=q−1=1q=q^{-1}=1이므로 p(modM)p\pmod M를 의미한다.

주어진 조건 내에서 기댓값이 정수 혹은 분모가 109+710^9+7의 배수가 아닌 유리수로 나타내어짐을 증명할 수 있다.

예제3

  1. 예제 1

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

    입력
    2 1
    
    예상 출력
    1 500000005
    
  3. 예제 3

    입력
    10 987654326925925926
    
    예상 출력
    1 2 3 4 5 6 7 8 9 10