Problem Statement
Unfortunately, the king's secretary is a really careless fellow. He forgets that each minister has his own personalized letter, and he delivers a random letter to each minister instead. After he realizes his mistake, he begins to call the ministers one by one and asks them if they got the correct letter. So far, he has called K of the N ministers, and to his horror, none of the K ministers has received the correct letter.
The king is furious with his secretary, but he decides to give him one last chance to save his job. He asks the secretary the following question. In how many ways was it possible for him to distribute the letters so that the current situation would arise? In other words, how many different ways could the letters have been distributed such that a wrong letter went to each of the K ministers that has been called so far? Two ways are considered different if at least one minister gets a different letter. If the secretary can answer this question correctly, he can keep his job. Your job is to help the secretary by calculating the correct answer for him. Since the answer can be very large, return the answer modulo 1,000,000,007.
Definition
- Class:
- CarelessSecretary
- Method:
- howMany
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int howMany(int N, int K)
- (be sure your method is public)
Constraints
- N will be between 1 and 1000, inclusive.
- K will be between 1 and N, inclusive.
- K will be between 1 and 12, inclusive.
Examples
2
1
Returns: 1
There are two ministers, and one of them must not get his own letter. Therefore, the only possibility is that they get each other's letters.
3
1
Returns: 4
The minister who must not get his own letter might get any of the two remaining letters. For each possibility, there are 2 ways to give the letters to the other ministers. Hence, the answer is 2*2 = 4.
9
9
Returns: 133496
5
1
Returns: 96
6
2
Returns: 504
3
3
Returns: 2
Three ministers, and none of them get their own letters.
7
4
Returns: 2790
9
1
Returns: 322560
4
2
Returns: 14
3
2
Returns: 3
35
7
Returns: 165264376
12
7
Returns: 264398280
39
2
Returns: 853640439
82
8
Returns: 816228267
8
1
Returns: 35280
28
8
Returns: 325247893
28
10
Returns: 545742228
34
6
Returns: 549243636
22
8
Returns: 233312314
80
5
Returns: 885821017
57
9
Returns: 499972457
38
2
Returns: 286941793
44
9
Returns: 48254687
15
9
Returns: 607719663
52
2
Returns: 769124764
46
9
Returns: 802141913
3
2
Returns: 3
12
9
Returns: 224406930
36
4
Returns: 382568184
4
3
Returns: 11
16
5
Returns: 285736828
20
4
Returns: 969845951
56
1
Returns: 805995337
30
3
Returns: 711564780
88
2
Returns: 813089172
100
9
Returns: 26120004
4
1
Returns: 18
9
9
Returns: 133496
15
2
Returns: 544798427
50
2
Returns: 492932547
454
6
Returns: 264783526
435
5
Returns: 707553019
1
1
Returns: 0
551
2
Returns: 14453556
956
5
Returns: 859696510
554
3
Returns: 253845022
744
3
Returns: 206947598
552
8
Returns: 56551377
409
5
Returns: 537704585
127
4
Returns: 618115958
584
8
Returns: 321140008
335
10
Returns: 521902250
438
9
Returns: 837019405
300
3
Returns: 327737405
620
9
Returns: 578650164
198
4
Returns: 516897588
234
9
Returns: 74500773
48
4
Returns: 809901475
161
5
Returns: 600697191
129
10
Returns: 866029002
532
6
Returns: 316241268
208
10
Returns: 869800440
996
10
Returns: 160364229
369
4
Returns: 262374292
919
3
Returns: 79877109
674
10
Returns: 90244251
632
9
Returns: 980800698
701
3
Returns: 513106734
913
4
Returns: 39212854
808
3
Returns: 120406126
714
9
Returns: 466134693
290
4
Returns: 952802197
231
1
Returns: 402927102
742
1
Returns: 316005800
279
1
Returns: 994114427
613
4
Returns: 473211301
598
1
Returns: 958575611
546
3
Returns: 520095478
730
5
Returns: 81533245
390
8
Returns: 121386928
937
4
Returns: 197578635
528
4
Returns: 917417043
292
10
Returns: 603021680
174
3
Returns: 550385207
631
5
Returns: 750126965
564
1
Returns: 144546026
947
4
Returns: 599997623
918
8
Returns: 702131681
147
9
Returns: 767319001
456
2
Returns: 867928804
1
1
Returns: 0
10
10
Returns: 1334961
1000
10
Returns: 487930807
1000
9
Returns: 325212876
1000
8
Returns: 389510806
2
2
Returns: 1
271
11
Returns: 575654024
138
11
Returns: 878192827
918
12
Returns: 265160497
471
12
Returns: 618229700
110
12
Returns: 105989846
28
11
Returns: 301237487
861
11
Returns: 377628194
147
12
Returns: 311361157
613
11
Returns: 210780205
443
11
Returns: 8952148
938
11
Returns: 189358954
699
12
Returns: 611843088
330
12
Returns: 57063700
682
11
Returns: 730990318
994
11
Returns: 825241079
418
12
Returns: 147766199
51
11
Returns: 708277193
417
11
Returns: 633487548
367
12
Returns: 152623713
587
11
Returns: 316002078
1000
12
Returns: 981713415
999
12
Returns: 244490877
265
7
Returns: 334136939