만드는 중입니다

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

순열의 K-minsum

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

요약
길이가 K+1 이상인 모든 연속 구간의 최솟값을 더한 K-minsum을 N!개 순열 전체에 대해 합한 값을 구한다.
난이도

어려움10점 중 8점

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

문제

길이가 NN인 순열은 11 이상 NN 이하의 자연수 NN개를 한 번씩 사용해 만든 수열이다. 같은 수가 두 번 이상 나오지 않으므로 길이가 NN인 순열은 모두 N!N!개다.

순열 AA의 원소를 앞에서부터 A1,A2,…,ANA_1, A_2, \dots, A_N이라 하자. AA의 K-minsum은 다음과 같이 정의한다.

K-minsum(A)=∑i=1N∑j=i+KNmin⁡(Ai,Ai+1,…,Aj)\text{K-minsum}(A) = \sum_{i=1}^{N} \sum_{j=i+K}^{N} \min(A_i, A_{i+1}, \dots, A_j)

min⁡\min은 나열된 수 중 최솟값이다. 결국 길이가 K+1K+1 이상인 연속 구간의 최솟값을 모두 더한 값이다. i+Ki+K가 NN보다 크면 안쪽 합은 비어 있고 00으로 친다.

NN과 KK가 주어진다. 길이가 NN인 N!N!개의 순열 각각에서 K-minsum을 구하고, 그 값을 모두 더한 결과를 구하라.

입력

첫째 줄에 순열의 길이 NN과 정수 KK가 공백으로 구분되어 주어진다. (1≤N≤1061 \le N \le 10^6, 0≤K≤N0 \le K \le N)

출력

길이가 NN인 N!N!개의 순열의 K-minsum을 모두 더한 값을 1,000,000,007로 나눈 나머지를 첫째 줄에 출력한다.

예제6

  1. 예제 1

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

    입력
    2 0
    
    예상 출력
    8
    
  3. 예제 3

    입력
    3 1
    
    예상 출력
    22
    
  4. 예제 4

    입력
    5 1
    
    예상 출력
    1908
    
  5. 예제 5

    입력
    8 2
    
    예상 출력
    1435680
    
  6. 예제 6

    입력
    13 3
    
    예상 출력
    880193815