Problem Statement
Some black and some white balls are placed in a row.
You are given a
- At the beginning there are balls[0] white balls.
- Then there are balls[1] black balls.
- After those there are balls[2] white balls again.
- ... and so on, alternating between white and black.
You have to split the entire row into segments. Each segment must be labeled either "white" or "black". A segment labeled "white" must contain exactly white white balls (and arbitrarily many black ones). A segment labeled "black" must contain exactly black black balls (and arbitrarily many white ones).
Find the number of ways in which we can split the row into segments and assign colors to those segments. Return that value modulo 1,000,000,007.
Definition
- Class:
- BlackAndWhiteBallsEasy
- Method:
- getNumber
- Parameters:
- int[], int, int
- Returns:
- int
- Method signature:
- int getNumber(int[] balls, int white, int black)
- (be sure your method is public)
Constraints
- balls will contain between 1 and 50 elements, inclusive.
- Each element of balls will be between 1 and 50, inclusive.
- white and black will be between 1 and 50, inclusive.
Examples
{2, 2}
1
2
Returns: 4
The row of balls looks as follows: WWBB. The four ways to split it are listed below. White segment W, white segment W, black segment BB. White segment W, white segment WBB. White segment W, black segment WBB. Black segment WWBB. Note that the second and third way are considered distinct: the division of the row into segments is the same but the labels are not.
{2, 1, 3}
1
1
Returns: 14
{1, 1, 1, 1, 1}
1
1
Returns: 28
{2, 2, 2, 2, 2}
1
1
Returns: 236
{3, 6, 3, 10}
2
3
Returns: 12
{30, 15, 45, 20, 8, 13, 7, 3, 25, 10}
3
2
Returns: 180210099
{50, 50, 50, 50}
4
7
Returns: 8
{9, 50, 7, 10, 8, 40, 4, 30, 4, 20, 8, 50, 29, 50, 27, 50, 8, 50, 22, 23, 37, 46, 5, 31, 4, 50, 4, 50, 8, 50, 25, 4, 9, 46, 6, 14, 15, 37, 20, 45, 2, 46, 5, 49, 6, 33, 8, 26, 8, 48}
8
50
Returns: 461946928
{9, 48, 13, 32, 26, 49, 18, 16, 22, 29, 19, 31, 3, 27, 22, 22, 13, 2, 9, 5, 22, 29, 7, 29, 20, 29, 11, 27, 7, 21, 21, 10, 22, 29, 39, 29, 5, 48, 18, 10, 36, 29, 21, 29, 16, 35, 19, 3, 22, 20}
22
29
Returns: 887369975
{34, 48, 48, 11, 4, 5, 26, 19, 27, 40, 33, 5, 43, 16, 40, 16, 20, 16, 7, 3, 19, 32, 43, 13, 50, 32, 15, 26, 31, 24, 33, 46, 26, 16, 17, 16, 43, 16, 43, 16, 43, 16, 30, 34, 8, 23, 27, 25, 21, 14}
43
16
Returns: 648145438
{49, 36, 27, 17, 12, 15, 17, 42, 13, 48, 8, 22, 21, 36, 11, 48, 31, 24, 39, 36, 8, 15, 11, 21, 5, 36, 3, 44, 18, 28, 21, 36, 21, 10, 21, 33, 21, 29, 21, 4, 21, 32, 27, 35, 30, 25, 43, 22, 5, 21}
21
36
Returns: 957081205
{22, 24, 19, 24, 25, 24, 16, 24, 2, 4, 39, 31, 25, 14, 26, 34, 18, 1, 13, 12, 41, 44, 41, 43, 3, 42, 1, 28, 38, 26, 18, 43, 22, 24, 12, 5, 30, 40, 7, 11, 33, 6, 18, 24, 2, 24, 22, 22, 46, 2}
41
24
Returns: 809212125
{1, 14, 34, 28, 32, 17, 16, 1, 12, 25, 4, 3, 17, 24, 21, 4, 28, 4, 35, 50, 47, 2, 5, 42, 9, 2, 19, 26, 40, 15, 4, 30, 9, 1, 47, 4, 16, 3, 9, 26, 11, 3, 48, 50, 4, 2, 9, 2, 40, 34}
9
4
Returns: 134392597
{18, 39, 39, 22, 47, 39, 38, 36, 35, 35, 18, 16, 27, 26, 32, 49, 40, 4, 16, 8, 1, 5, 1, 33, 42, 8, 1, 16, 23, 18, 1, 30, 9, 8, 1, 22, 47, 31, 6, 13, 1, 45, 49, 7, 4, 15, 17, 22, 1, 20}
1
40
Returns: 856221124
{20, 44, 32, 17, 22, 21, 42, 34, 28, 34, 40, 35, 5, 42, 23, 41, 14, 28, 35, 21, 32, 3, 33, 10, 28, 11, 1, 42, 21, 13, 7, 3, 15, 19, 2, 22, 2, 12, 11, 6, 38, 4, 22, 19, 40, 3, 44, 1, 16, 45}
1
11
Returns: 68265807
{14, 15, 11, 19, 48, 38, 11, 22, 26, 5, 44, 22, 15, 31, 31, 1, 33, 9, 5, 1, 48, 38, 34, 6, 1, 9, 24, 15, 13, 11, 19, 1, 6, 35, 22, 27, 10, 15, 30, 1, 36, 35, 16, 18, 7, 29, 14, 41, 29, 12}
14
9
Returns: 914585004
{1, 8, 2, 32, 40, 35, 9, 5, 29, 21, 48, 44, 9, 3, 14, 20, 7, 38, 50, 45, 11, 25, 10, 35, 35, 50, 18, 8, 24, 46, 25, 36, 29, 21, 48, 47, 9, 14, 32, 31, 14, 1, 9, 43, 31, 10, 30, 23, 32, 23}
11
41
Returns: 413436508
{42, 7, 2, 30, 26, 5, 31, 39, 29, 3, 2, 7, 22, 10, 33, 5, 11, 6, 45, 46, 11, 24, 10, 7, 47, 21, 11, 15, 12, 21, 12, 6, 41, 11, 29, 32, 19, 23, 18, 15, 7, 42, 2, 29, 22, 17, 47, 23, 24, 6}
22
7
Returns: 693088473
{4, 26, 4, 34, 8, 9, 11, 30, 5, 34, 27, 47, 15, 43, 43, 10, 46, 28, 49, 11, 43, 34, 1, 14, 23, 10, 37, 20, 8, 37, 17, 5, 16, 17, 28, 33, 32, 14, 25, 34, 6, 30, 45, 2, 30, 8, 1, 11, 42, 26}
8
34
Returns: 790428328
{30, 30, 4, 4, 4, 30, 4, 4, 30, 30, 4, 4, 4, 30, 4, 30, 4, 30, 4, 4, 30, 30, 4, 30, 4, 30, 30, 4, 30, 4, 4, 30, 30, 4, 30, 4, 30, 4, 4, 4, 4, 30, 4, 30, 4, 4, 4}
4
30
Returns: 162641943
{3, 50, 3, 3, 3, 50, 3, 3, 3, 3, 50, 50, 50, 3, 50, 3, 50, 3, 3, 3, 3, 3, 3, 3, 50, 3, 3, 3, 3}
50
3
Returns: 470971694
{39, 39, 1, 39, 39, 1, 39, 1, 1, 39, 1, 1, 1, 39, 39, 39, 1, 39, 1, 39, 1, 1, 1, 1, 39, 1, 39, 39, 1, 39, 1, 39, 39, 39}
39
1
Returns: 500075278
{44, 3, 44, 44, 44, 44, 3, 44, 44, 44, 3, 3, 44, 3, 3, 44, 3, 44, 3, 44, 3}
3
44
Returns: 917174922
{27, 32, 28, 28, 32, 27, 32, 33, 32, 32, 26, 27}
32
27
Returns: 80510
{48, 48, 47, 20, 47, 47, 21, 49, 22, 20, 47, 48, 21, 20, 47, 49, 21, 47, 20, 48, 21, 48, 20, 21, 47, 48, 20, 20}
21
48
Returns: 455489788
{9, 5, 6, 9, 7, 5, 7, 9, 7, 9, 8, 7, 8, 6, 8, 8, 7, 8, 9, 8, 6, 5, 5, 6, 6, 8, 7, 9}
8
6
Returns: 5760002
{7, 41, 42, 41, 42, 7, 6, 40, 41, 42, 41, 7, 40, 41, 6, 42, 7, 8, 8, 41, 6, 41, 8, 41, 7, 41, 6, 7, 42, 7, 41, 41, 42, 40, 40, 7, 40, 40, 41, 42, 41, 41, 8, 6, 8}
7
41
Returns: 217861639
{30, 9, 26, 10, 27, 9, 30, 28, 11, 11, 10, 9, 30, 28, 26, 26, 29, 26, 12, 27, 28}
10
28
Returns: 33309157
{37, 10, 36, 9, 10, 35, 7, 36, 9, 38, 37, 10, 35, 39, 6, 36, 10, 37, 6, 9, 8, 8, 8, 9, 6, 8, 8, 8, 37, 8, 38, 37, 39, 38, 8, 37, 36, 36, 37, 7, 9, 8, 8}
37
8
Returns: 633037979
{39, 35, 7, 39, 7, 7, 35, 7, 37, 37, 5, 37, 7, 5, 37, 36, 39}
7
37
Returns: 458002
{41, 16, 17, 38, 39, 17, 16, 39, 15, 39, 40, 38, 40, 14, 38, 13, 13, 37, 13, 15, 13, 15, 17, 15, 14, 17, 13, 14, 41, 40, 37, 14}
39
15
Returns: 218031740
{14, 42, 43, 46, 43, 44, 43, 14, 44, 43, 11, 14, 43, 13, 45, 41, 41, 42, 14, 46, 15, 14, 45, 12, 43, 41, 13, 43, 43, 43, 11, 14, 43, 11, 46, 43, 12, 14, 44, 14}
14
43
Returns: 446254431
{35, 35, 38, 37, 37, 36, 33, 31, 33, 32, 35, 34, 35, 41, 38, 40, 40, 36}
38
34
Returns: 58062
{17, 15, 16, 14, 31, 31, 19, 25, 28, 15, 16, 16, 15, 27, 28, 17, 16, 26, 15, 25, 15, 17, 16, 13, 30, 16, 28, 16}
28
16
Returns: 18415651
{25}
31
27
Returns: 0
{44, 44, 43, 43, 20, 19, 44, 44, 44, 43, 44, 43, 43, 20, 43, 44, 20, 20, 44, 21, 21, 44, 19, 20, 20, 44, 20, 44, 19, 20, 43, 19, 19, 45, 44, 43, 20, 19, 45, 21, 21, 43, 44, 44, 19, 20, 19, 20, 21, 20}
20
44
Returns: 771609268
{43, 42, 43, 43, 43, 42, 44, 28, 28, 28, 42, 43, 28, 28, 43, 28, 28, 44, 29, 44, 44, 29, 27, 27, 27, 43, 29, 28, 27, 43, 43, 27, 43, 43, 43, 29, 28, 43, 29, 27, 28, 43, 27, 43, 28, 27, 44, 28, 43, 28}
28
43
Returns: 858598143
{31, 36, 31, 29, 34, 31, 29, 34, 35, 29, 31, 35, 34, 31, 36, 29, 29, 35, 31, 31, 34, 31, 31, 29, 35, 36, 30, 29, 30, 36, 34, 36, 35, 36, 35, 35, 30, 30, 36, 29, 30, 36, 30, 29, 31, 35, 31, 36, 30, 30}
30
35
Returns: 439774291
{28, 2, 28, 2, 2, 2, 2, 27, 27, 27, 29, 2, 2, 2, 28, 2, 2, 2, 27, 28, 28, 2, 2, 27, 29, 28, 2, 27, 27, 28, 2, 28, 29, 2, 2, 29, 2, 27, 2, 28, 27, 2, 2, 2, 2, 2, 2, 2, 2, 2}
28
2
Returns: 857035785
{31, 36, 29, 49, 48, 13, 12, 48, 38, 15, 46, 31, 8, 7, 26, 44, 17, 16, 1, 43, 26, 24, 16, 13, 30, 31, 24}
8
7
Returns: 808417746
{4, 7, 3, 27, 13, 39, 12, 17, 45, 10, 33, 47, 10, 47, 45, 36, 16, 9, 4, 4, 5, 47, 6, 1}
26
28
Returns: 27
{3, 12, 35, 38, 17, 28, 2, 41, 34, 21, 50, 41, 43, 12}
37
13
Returns: 1
{20, 15, 29, 17, 8, 50, 1, 20, 49, 44, 19}
27
2
Returns: 2834
{39, 21, 32, 50, 12, 48, 45, 27, 47, 29, 7, 37, 13, 40, 40, 30, 38, 17, 1, 7, 42, 7, 49, 47, 21, 34, 2, 41, 35, 9, 28, 45, 37, 48, 40, 36, 28, 19, 1, 15, 41, 39, 11, 34, 24, 32, 24}
7
15
Returns: 984003325
{10, 3, 3, 2, 6, 6, 2, 5, 1, 7, 4, 9, 7}
4
10
Returns: 3
{7, 9, 2, 10}
10
2
Returns: 0
{4, 9, 3, 9, 2, 10, 2, 4, 4, 1, 4, 3, 7, 1, 7, 3}
7
3
Returns: 5132
{3, 7, 1, 10, 3, 5, 6, 3, 3, 5, 10, 4, 8, 8, 6}
5
4
Returns: 7024
{5, 5, 9, 2, 7, 1, 3, 3, 5, 10, 6, 8, 3, 1, 7, 8, 7}
1
7
Returns: 18548984
{32, 15, 26, 18, 3, 43, 12, 19, 26, 38, 49, 33, 38, 17, 37, 43, 5, 11, 10, 16, 46, 36, 32, 14, 19, 15, 29, 26, 5, 16, 27, 37, 41, 24, 9, 1, 10, 21, 48, 30, 19, 18, 8, 31, 22, 2, 22, 29, 23, 50}
1
4
Returns: 645979641
{50, 27, 5, 49, 38, 34, 15, 8, 10, 11, 27, 1, 17, 21, 23, 6, 43, 37, 15, 37, 30, 34, 38, 38, 32, 10, 36, 50, 20, 22, 20, 4, 4, 47, 42, 49, 49, 38, 27, 22, 29, 45, 14, 28, 48, 49, 32, 41, 41, 31}
3
2
Returns: 721510670
{30, 8, 34, 40, 25, 34, 47, 40, 32, 22, 6, 37, 30, 47, 35, 27, 25, 35, 36, 38, 46, 50, 1, 37, 9, 14, 13, 28, 1, 43, 36, 22, 50, 5, 19, 11, 47, 10, 24, 49, 36, 49, 20, 18, 5, 34, 30, 41, 45, 17}
24
3
Returns: 483024128
{20, 9, 50, 8, 46, 24, 6, 26, 21, 27, 26, 36, 19, 43, 18, 25, 45, 37, 41, 14, 26, 39, 44, 4, 13, 12, 47, 23, 14, 47, 28, 16, 4, 20, 44, 22, 1, 50, 30, 39, 48, 16, 17, 44, 30, 48, 49, 28, 49, 31}
32
2
Returns: 763769017
{43, 12, 18, 27, 39, 43, 46, 5, 30, 20, 26, 16, 4, 16, 41, 20, 28, 2, 7, 11, 36, 44, 7, 44, 23, 16, 50, 6, 47, 4, 38, 50, 23, 21, 5, 23, 47, 10, 47, 29, 3, 17, 8, 27, 50, 44, 4, 37, 14, 36}
11
4
Returns: 477624621
{22, 44, 3, 45, 16, 27, 24, 31, 10, 38, 24, 36, 43, 42, 8, 3, 49, 44, 13, 36, 35, 43, 24, 30, 34, 45, 37, 3, 44, 28, 10, 5, 18, 19, 49, 1, 3, 5, 33, 9, 2, 41, 42, 45, 45, 38, 25, 32, 38, 33}
1
20
Returns: 149655424
{23, 33, 34, 7, 37, 31, 16, 21, 12, 34, 47, 46, 21, 48, 27, 13, 15, 34, 2, 28, 34, 36, 46, 17, 21, 20, 48, 35, 32, 33, 42, 32, 2, 48, 24, 16, 12, 12, 33, 27, 41, 13, 15, 10, 28, 36, 6, 24, 27, 10}
2
32
Returns: 707025237
{40, 47, 18, 22, 34, 2, 24, 44, 37, 50, 18, 12, 44, 6, 15, 45, 17, 24, 8, 2, 31, 9, 5, 42, 45, 32, 14, 49, 43, 41, 21, 5, 30, 41, 32, 11, 6, 33, 30, 16, 46, 16, 1, 39, 40, 26, 8, 37, 33, 46}
4
16
Returns: 230136038
{43, 32, 13, 47, 17, 17, 41, 12, 40, 10, 36, 20, 37, 43, 24, 32, 3, 6, 28, 19, 6, 14, 43, 39, 50, 34, 9, 37, 32, 47, 29, 10, 45, 18, 37, 37, 10, 40, 41, 15, 5, 19, 7, 35, 18, 26, 16, 13, 11, 10}
5
44
Returns: 615014367
{34, 33, 35, 7, 1, 11, 8, 26, 21, 9, 22, 8, 50, 8, 12, 8, 41, 11, 1, 37, 29, 39, 44, 16, 16, 23, 48, 44, 2, 40, 46, 27, 15, 36, 20, 31, 49, 7, 10, 40, 46, 16, 27, 2, 42, 24, 16, 45, 47, 4}
4
49
Returns: 498427699
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}
10
10
Returns: 658943249
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
1
1
Returns: 426041896
{5, 3, 1}
3
5
Returns: 1
{3, 3, 4, 2, 1, 2}
4
3
Returns: 3
{4, 4}
2
3
Returns: 2
{4, 2, 2, 3, 3, 4, 4, 1, 2, 1}
5
3
Returns: 6
{2, 1, 2, 5, 5}
4
4
Returns: 2
{4, 4, 2, 1, 5, 3, 5, 5}
1
5
Returns: 943
{3, 2, 2, 1, 3}
3
3
Returns: 4
{5, 2}
1
3
Returns: 1
{4, 4}
1
1
Returns: 9
{5, 3, 3, 5, 2}
1
2
Returns: 300
{2, 3}
2
1
Returns: 5
{5, 1, 3, 1, 3, 2, 2, 4}
5
2
Returns: 36
{4, 2, 2, 2, 3, 1, 5, 2, 5, 5}
1
5
Returns: 1035
{1, 2, 5}
5
2
Returns: 2
{3, 4, 4, 1, 4, 1, 5, 1, 3, 5}
4
4
Returns: 19
{3, 5, 4, 4}
1
2
Returns: 143
{5}
4
4
Returns: 0
{2, 1, 1, 5, 2, 5, 1, 3}
4
5
Returns: 0
{2, 3, 3, 3, 3, 2, 3, 2, 5}
1
2
Returns: 36218
{3, 1, 4, 1, 2, 1, 4, 1}
4
5
Returns: 0
{43, 24, 11, 12, 8, 4, 15, 23, 1, 8, 22, 39, 11, 32, 35, 38, 33, 42, 11, 34, 38, 5, 10, 42, 50, 11, 22, 37, 10, 50, 26, 26, 38, 29, 31, 8, 6, 23, 8, 24, 48, 13, 13, 15, 39, 47, 20, 48, 14, 25}
9
20
Returns: 963630767
{13, 18, 30, 23, 17, 49, 5, 14, 35, 48, 30, 1, 38, 24, 21, 12, 6, 39, 46, 20, 10, 28, 44, 9, 43, 27, 50, 3, 3, 14, 22, 25, 22, 5, 2, 37, 42, 1, 23, 16, 15, 8, 22, 14, 33, 28, 36, 1, 9, 21}
5
10
Returns: 485983679
{2, 2, 2, 2, 2, 2, 2, 2, 2 }
2
2
Returns: 1540
{2, 2 }
1
2
Returns: 4
{1 }
1
2
Returns: 1