Problem Statement
A string is called a block if it consists of exactly three equal letters.
A string is called a one-block string if it contains exactly one contiguous substring that is a block.
For example:
- "aaa" and "abcccdd" are one-block strings
- "noblocks" and "ababab" are not one-block strings, as they do not contain any blocks
- "xxxyyyzzz" and "baaaad" are not one-block strings, as each of them contains at least two blocks
Note that the two blocks in "baaaad" overlap partially.
You are given the
Definition
- Class:
- ThreeSameLetters
- Method:
- countStrings
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int countStrings(int L, int S)
- (be sure your method is public)
Constraints
- L will be between 1 and 26, inclusive.
- S will be between 1 and 26, inclusive.
Examples
3
7
Returns: 7
The seven one-block strings are "aaa", "bbb", "ccc", ..., "ggg".
4
2
Returns: 4
The four one-block strings are "aaab", "abbb", "baaa", and "bbba".
2
17
Returns: 0
10
11
Returns: 410199993
Don't forget to do the calculations modulo 10^9 + 7.
26
26
Returns: 450838424
12
1
Returns: 0
1
17
Returns: 0
15
1
Returns: 0
13
17
Returns: 918438936
1
6
Returns: 0
25
1
Returns: 0
23
26
Returns: 81179699
2
5
Returns: 0
1
11
Returns: 0
14
18
Returns: 305859625
19
14
Returns: 981070515
25
26
Returns: 604751851
14
1
Returns: 0
24
1
Returns: 0
13
20
Returns: 351522822
1
1
Returns: 0
23
25
Returns: 636466965
3
2
Returns: 2
8
2
Returns: 76
24
24
Returns: 440867539
17
13
Returns: 3412148
1
12
Returns: 0
26
1
Returns: 0
3
1
Returns: 1
7
8
Returns: 130144
1
21
Returns: 0
26
24
Returns: 452207454
1
26
Returns: 0
26
23
Returns: 752832258
2
1
Returns: 0
1
15
Returns: 0
5
1
Returns: 0
14
22
Returns: 920298662
24
18
Returns: 879371733
1
16
Returns: 0
1
5
Returns: 0
2
2
Returns: 0
1
10
Returns: 0
4
1
Returns: 0
11
4
Returns: 1092204
7
1
Returns: 0
11
9
Returns: 681524210
17
1
Returns: 0
25
25
Returns: 533730745
1
19
Returns: 0
23
24
Returns: 159738617
6
1
Returns: 0
16
1
Returns: 0
24
25
Returns: 266552732
19
1
Returns: 0
17
17
Returns: 915505184
1
3
Returns: 0
15
19
Returns: 503096862
18
1
Returns: 0
1
20
Returns: 0
26
25
Returns: 320023700
25
23
Returns: 210823538
12
20
Returns: 492859170
1
25
Returns: 0
18
12
Returns: 44072617
21
1
Returns: 0
1
14
Returns: 0
12
3
Returns: 164928
1
23
Returns: 0
26
26
Returns: 450838424
20
1
Returns: 0
1
4
Returns: 0
2
3
Returns: 0
1
9
Returns: 0
23
1
Returns: 0
4
2
Returns: 4
25
24
Returns: 17938294
12
19
Returns: 326765969
1
18
Returns: 0
1
7
Returns: 0
22
1
Returns: 0
3
4
Returns: 4
2
4
Returns: 0
9
1
Returns: 0
24
26
Returns: 858429087
26
16
Returns: 766559247
2
26
Returns: 0
1
2
Returns: 0
3
3
Returns: 3
8
1
Returns: 0
4
4
Returns: 24
11
1
Returns: 0
19
25
Returns: 611309022
24
23
Returns: 901818760
11
18
Returns: 855044556
1
24
Returns: 0
1
13
Returns: 0
10
1
Returns: 0
13
1
Returns: 0
12
15
Returns: 705239742
1
22
Returns: 0
23
23
Returns: 894541348
1
8
Returns: 0
8
8
Returns: 1223824
4
3
Returns: 12
3
1
Returns: 1