순열 Batch
Time limit | Memory limit | # of submissions | # of submitted users | Solved # | Accepted user ratio |
---|---|---|---|---|---|
2000 ms | 512 MiB | 22 | 14 | 14 | 100.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
Problem Source