View problem - 순열 (kriii4_T)

Time limitMemory limit# of submissions# of submitted usersSolved #Accepted user ratio
2000 ms512 MiB221414100.00%

길이가 $N $인 순열이란, $1$ 이상 $N$ 이하의 자연수 $N $개로 이루어진, 같은 수가 두 번 이상 등장하지 않는 수열을 의미한다. 길이가 $N $인 순열의 종류는 총 $N!$개가 있다.

이 순열에서 $K-minsum$이라는 것을 정의할 것이다. 순열 $A $가 있고, 각 원소를 순서대로 나열하면 $A_{1}, A_{2}, ..., A_{N}$일 때, 순열 $A $의 $K-minsum$은

이다. $min$은 인자로 나열된 수 중의 최솟값을 구하는 함수이다. $K $가 주어질 때, 길이가 $N$인 모든 $N!$개의 순열에 대해 $K-minsum$을 구해 그 합을 출력하는 프로그램을 작성하라.

입력

첫 번째 줄에는 순열의 길이를 나타내는 자연수 $N $과 정수 $K$($0 \le K \le N$)가 주어진다.

부분문제

부분문제 점수 N
1 8 1 ≤ N ≤ 103
2 92 1 ≤ N ≤ 106

출력

길이가 $N $인 모든 $N!$개의 순열에 대해 $K-minsum$을 구해 그 합을 출력한다. 합이 매우 커질 수 있으므로 $1,000,000,007$로 나눈 나머지를 출력해야 한다.

입출력 예제

예제 1

입력

1 1

출력

0

예제 2

입력

2 0

출력

8

예제 3

입력

3 1

출력

22

예제 4

입력

5 1

출력

1908

예제 5

입력

8 2

출력

1435680

예제 6

입력

13 3

출력

880193815