Problem Statement
Cat Upper looked into the black box from the front and recorded what he saw: Whenever a column of the grid was completely empty, he could see through the box and wrote down '.' (a period). And whenever a column of the grid contained at least one block, Upper could not see through the box and he wrote down 'B'.
Then, he looked into the black box from the left side and again he recorded what he saw: for each row of the grid he wrote '.' if the row was completely empty and 'B' otherwise.
You are given the recorded information in two
Return the number of possible arrangements of the opaque blocks within the black box, modulo 1,000,000,007. Note that you don't know the exact number of blocks in the black box.
Definition
- Class:
- BlackBoxDiv2
- Method:
- count
- Parameters:
- String, String
- Returns:
- int
- Method signature:
- int count(String front, String side)
- (be sure your method is public)
Constraints
- front and side will each contain between 1 and 50 characters, inclusive.
- Each character in front and side will be 'B' or '.'.
Examples
"BB"
"BB"
Returns: 7
There are seven possible arrangements, as shown in the figure below.
"..."
"....."
Returns: 1
There is no block, thus there is exactly 1 valid arrangement: the one where all cells are empty.
"..."
"BBB"
Returns: 0
There is no possible arrangement. Upper must have made a mistake.
"...BB.B...."
"B.B.B.B.B"
Returns: 16081
"BBBBB.BBBBBBBBB.BBBBBBB.BBBB.B.BB..BB.B.BBBBBBBBBB"
".B.BBB..BBBBBB.BBBB.B...BBBB.BB.BBBBBBBBBB.....BBB"
Returns: 771030153
"."
"B"
Returns: 0
".."
".."
Returns: 1
".BB"
"BBB"
Returns: 25
"BB.B"
"BBBB"
Returns: 2161
"....B"
"....."
Returns: 0
".BBBBB"
"BB.B.B"
Returns: 693601
"..B.B.B"
"B......"
Returns: 1
"..BB...."
"..BBB.BB"
Returns: 241
"BBBBBBBBB"
"...B.BBBB"
Returns: 808519312
"BBBBB.BBB."
"..BBBB...."
Returns: 539870769
"BBBBBBBBBBB"
"BBBBBBBBBBB"
Returns: 937136493
".B.B..BBBBBB..BB.BB.BBBBBBB.B..BBBBBBBBBB.BBBBBBBB"
"BB...BBBBBB.BB.......B..B.B..BBBBB.BBBB.B.B...B..B"
Returns: 129281486
"BBBBBBBBBBB..B..BBB.B.B.BB.B..BB..BBBBBB...BBB..BB"
"BBBBBB.B..BBBBBB.BBBBB.BBBBBBBBBBBBBBBBBBBBBBB.BBB"
Returns: 198164562
"BB.BBBBBBB.B.BBBBBBBBBBBBBBB.BB.BBBBBBB.BB.B.BBB.."
"....B......B.BBB....B.B...B..B.B....B.B..BB...BBB."
Returns: 117336016
"B..BB....B...B..BBB..B.B..B..BB..B.BB.BB..B..B.BBB"
"B.BBBBBBBBB.B..B.B..BBB.BB...B.B.BBBBBBBB...B.BBBB"
Returns: 592918405
"B.B..BB..B...B..B.B.B........B...BB.B.B....BB....."
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 707684650
"B.B.BBBB.BB.BB.BBB.BBBBB..BBBB..BBBBB.BB.B.BBB...B"
".................................................."
Returns: 0
"B.B...BB.BBB..BBB.B.B......B..B....BBBBB.B.B.BBB.."
".BBBBBBBBBBB.BB.B.BBBB.BBBBBB.BBBBB.BB..BBBBB.B.B."
Returns: 253997808
"...B..BB...BB.B.BBB.B.B.BBBB..B.BB.B.BBBB.B.B....."
"B...B.BBBBBB.BB.B.BBB.BBBBB.B..BBBBB.B.BB.BBB.BBBB"
Returns: 982649837
"BBB.BBBBBBBBBB.BBBB.BBBBBBBBBBBBBBBBBBB.BBBBBBBBBB"
"...BB......B.B...B.......B.B.....B..BB...B.....B.."
Returns: 114981542
".................................................."
"..............................................."
Returns: 1
"................B.........B..B.......B.....B..."
"..B.B..BBBBB.BBB.BBBB.BBBBBBBBB..BBBBBBBBBBBBBBBBB"
Returns: 368743830
"..........B.B......BBB...B....BB....B.....BBBB.BB."
"B.B.B.B.B..B.BB.BBBB.BBBBB.B.BBBB.BBBBBBBB.B.BBBBB"
Returns: 914702785
"...BB.B.BB.B..BB.B.B..BBBB.B.B.BBBBBB.BB.BB.BBBB"
"......................................B........."
Returns: 1
".........B...................B..........B....."
"......B.............B.........B....B..B.B..B.B..B"
Returns: 40294561
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
"................................................."
Returns: 0
".B.BBBBB.BB.B..B..B.B.B.B..BB..BB.BBBB.....B.BBB.."
".BBBB.BB..B.BBBBB.BBB.BBBBBBBBB..B.BBBBBBB.BBBB.BB"
Returns: 129281486
"BBBBBBBBBBBB.BBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBB"
".B...BB...B.BB..B.....BBBBB...B.BB..BBBB.BBBB."
Returns: 587037358
"BB...BB....BB.B.B..B..B..B...BBBB.B.......B..BB."
"B.BBBBBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBB.BBBBBBBBBB"
Returns: 964511516
"...B......BB..B..BB.B.B......BBB..BB.......B..."
"BB.BB.BBBBBBBBB.BBB.BBBBBB.BB.B....BBBB.BB.BBB.."
Returns: 644091315
"................................................."
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 0
"BBBBBBB.B.B.BBBBBBBBBBBBBB.BBBBB.BBBBBBBBBBB.B.B"
".......B.B........B.........B......BB.BB.BB....BB."
Returns: 62120195
"BBBBBBBBBBB.BB..BBBBB..BBBBB.BBBBBBB..BBBBB.BB"
"....BBBB.BB...B..B.B.B...B.B.....B.........BB...."
Returns: 712765117
"BBBBB.BBB.BBB.BBBBBBBBBBBBBBB..B.B.BBBBBBBBBBBBBB"
"BB.BBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 983817538
"BBBBBBBBBBBBBBBBBBBB.BBBBB.BBBBBBBBBBBBBBB.BBBBBB"
"BBB....BB..BBB..B.B.....B.BB..B...BB.BB.B...BB"
Returns: 700085142
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 514424726
"B...BBB.B.B.B.BBBB....B.BBB..B..BBBBBBBB.B.BB."
".B.B...BB...B...B.......B...BB.B.BBB........BB"
Returns: 859561642
"B.B..B..BB..........BB.B.......BB.BB....BB.B.BB.."
"BBBBBBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 239531839
"BBBB...BB.BBB.BBBBBB.BBBB..BB.BB..BBBB.BBBBBBB..B."
"BBBBBBBBBBBBBBBBBBBBBBBBBBB..BBBBBBBBBBBBBBB.BBBB"
Returns: 795333334
"B..BB.B....B..B....B........B........B..BB.B.B"
".......B..BBBBB.B..B...............B...B.....B.B."
Returns: 648612683
"................................................."
".BBBBB.B..BB.BBBBBB..B.BB.BBBBBBBBB.BBBBBBBBBBB"
Returns: 0
"BBB.B.B..B.BBBBB.BBB.B.B.B.B..BBBB..BB.BBBBB..BBB"
"BBBB..BB..BBBBBBBBBB..B..BB.B.BBB...B.BBBBBBBBBBB"
Returns: 463192063
"BBBB.BBBBBBBBBBBB.BB.BBBBBBBBBBBBBBBB.BBBBBBBB."
"BBBBBBB.BBBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBBBB."
Returns: 599207480
"BBBBBBBBBB.B.BBBBBBBBBBBBBBBBBBBBBBBBB.BB.BBBB"
".BB.....BB...B.BBB.....B.BBB....B....BB.B.B....."
Returns: 493833081
"...BBBBBB...BBB..B...B.BBBBBB.B..B.B.B..B.B.BBBB.B"
"......B.BB..B.....B.B.....BBB.B.B..BB.........."
Returns: 626962625
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
".BBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 514424726
"BB..B...B.BBBBBBBBBBBB.BBBBBBBBB.B.B....B..BBBB.B."
".BB.B.BBBBB.BBBBBBBBBBBBBBBBBBBBBBBBB.BBBBBBBB"
Returns: 960773581
".B...B.BB...B.....BBBBBB..BB.B...........B....B"
".............................................."
Returns: 0
"B.BBBBBBBBB.B..BBBB.BBBB.BBB.B.BBBBB.BBBB.BBBB."
"B.BB..B..B.....B.....B.BB.......B..B...B......B."
Returns: 478856627
".......B.......BB................................B"
".B....BB.B..BB.BBB...BB.BB...B..BB.B..B.BB...."
Returns: 357570322
"."
"."
Returns: 1
"."
"B"
Returns: 0
"B"
"."
Returns: 0
"B"
"B"
Returns: 1
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 676170171
".B.BB.B...B..B..B.B..B.B..BBBB....B..B.BBBBB.B...B"
"B.B.BB.B.B........B....B..BB.BB....B..B.B.B..BBB.."
Returns: 262836496
"..BBB.B.B...BB.BBB.....BB.B..B...B.B....BBB..BB"
"..B.B.B.B...BB......BB.B..B..B.B....BB..B.BB"
Returns: 882771881
"BB.BBBBBBBBBBBBBBBBB......BBBBBBBBBBB"
"..........BBB.......BBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 584526190