Problem Statement
Given a sequence A = (a1, a2, ..., an) (where a[i] >= 1 are integers), of length n, we define the Peak_Set as
Peak_Set(A) = { a[i] : a[i] > a[j] for all j < i }
For example, for the sequence A = {2, 1, 5, 6, 3, 3, 2, 8, 10, 4}, Peak_Set(A) = {2, 5, 6, 8, 10}.
For a given integers N and K, you need to count the number of Sequences 'X' of length N with Peak_Set(X) = {1, 2, 3,..., K}, modulo (109 + 7).
Definition
- Class:
- GreaterThanAll
- Method:
- count
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int count(int n, int k)
- (be sure your method is public)
Constraints
- The number of elements of the sequence, N ranges from 1 to 106, inclusive.
- The value of K is between 1 and N.
Examples
3
2
Returns: 3
The only possible sequences are "112", "121" and "122" whose Peak_Set is {1, 2}.
762476
157929
Returns: 441862509
827329
254322
Returns: 801382793
812215
610951
Returns: 375724243
506277
454955
Returns: 317906005
305164
17049
Returns: 689989886
799745
776433
Returns: 164647106
1000000
1000000
Returns: 1
1000000
1
Returns: 1
999995
954215
Returns: 809401501
279866
264516
Returns: 492364696
170283
136213
Returns: 208361490
391787
14082
Returns: 369524912
651790
291996
Returns: 775883210
498201
319574
Returns: 752053917
234200
26813
Returns: 623752087
27172
26384
Returns: 12020218
862881
404824
Returns: 775375777
46349
44318
Returns: 226760578
634934
297600
Returns: 215540901
120611
70922
Returns: 375007106
988756
447915
Returns: 201119111
505932
487038
Returns: 111159450
41278
22942
Returns: 35520939
739514
301081
Returns: 192480900
554861
204175
Returns: 749050055
796426
318040
Returns: 551640119
837901
733523
Returns: 583775153
919669
345023
Returns: 402283886
634554
138157
Returns: 276450777
141095
71847
Returns: 444284206
10351
468
Returns: 128558183
458055
215029
Returns: 166200507
702324
285771
Returns: 293985905
987304
10831
Returns: 65574589
289566
264506
Returns: 234309219
562222
347382
Returns: 75156755
455083
389827
Returns: 545620864
333001
133654
Returns: 50653011
87020
34178
Returns: 771575699
954816
836594
Returns: 979833418
194801
171423
Returns: 600992257
71208
3999
Returns: 485940048
701570
181632
Returns: 248996753
244400
34980
Returns: 47109599
338343
318765
Returns: 672516097
700519
136200
Returns: 917294859
722524
429083
Returns: 800300175
920304
484913
Returns: 693404759
655531
60913
Returns: 16163135
876338
232823
Returns: 129511336
448291
289243
Returns: 206645847
180261
8881
Returns: 873824940
856098
755143
Returns: 92944902
808232
677661
Returns: 641169416
426217
59709
Returns: 923272131
989367
53544
Returns: 966275128
96750
49040
Returns: 270618580
671539
129865
Returns: 328586877
854338
783520
Returns: 966199944
616010
340074
Returns: 432437436
798379
488392
Returns: 53659943
793499
409126
Returns: 728007860
906358
367782
Returns: 913095050
323491
291296
Returns: 653592597
727079
384535
Returns: 721424991
60485
10991
Returns: 468946747
551102
92394
Returns: 645251191
208707
84736
Returns: 447277314
146539
115237
Returns: 685496707
387856
180328
Returns: 199294956
671431
622835
Returns: 572203630
554155
524236
Returns: 799598225
663703
652053
Returns: 770226763
320815
135972
Returns: 163402173
180340
170678
Returns: 134234228
842264
52939
Returns: 176975639
707409
97880
Returns: 558434599
197763
81862
Returns: 537183082
34702
31576
Returns: 145254342
354819
311149
Returns: 20263552
789823
561009
Returns: 869060603
500436
327079
Returns: 219981312
166796
43539
Returns: 725515342
188510
14683
Returns: 835269143
23507
16086
Returns: 88072910
21456
2415
Returns: 169959623
458897
423885
Returns: 38803504
486922
138496
Returns: 970937770
699008
419758
Returns: 500922774
455757
439794
Returns: 855499250
434872
245048
Returns: 72531213
249164
69883
Returns: 673153387
619662
190983
Returns: 988159634
331612
120951
Returns: 16249519
852574
468089
Returns: 572671550
968693
854974
Returns: 399629984
148185
80474
Returns: 914696991
338960
290202
Returns: 546376162
62083
33669
Returns: 627335640