Statistics

Problem Statement for "BlackBoxDiv2"

Problem Statement

Cat Upper has a rectangular black box. On the bottom of the box there is a grid that divides the box into identical square cells. There are no walls between the cells. The sides of the box are transparent, the top and bottom are opaque (i.e., Upper cannot see through them). Some of the cells are filled: each of them contains an opaque black block that fills the entire cell. The remaining cells are empty.

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 Strings: front and side.

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

  1. "BB"

    "BB"

    Returns: 7

    There are seven possible arrangements, as shown in the figure below.

  2. "..."

    "....."

    Returns: 1

    There is no block, thus there is exactly 1 valid arrangement: the one where all cells are empty.

  3. "..."

    "BBB"

    Returns: 0

    There is no possible arrangement. Upper must have made a mistake.

  4. "...BB.B...."

    "B.B.B.B.B"

    Returns: 16081

  5. "BBBBB.BBBBBBBBB.BBBBBBB.BBBB.B.BB..BB.B.BBBBBBBBBB"

    ".B.BBB..BBBBBB.BBBB.B...BBBB.BB.BBBBBBBBBB.....BBB"

    Returns: 771030153

  6. "."

    "B"

    Returns: 0

  7. ".."

    ".."

    Returns: 1

  8. ".BB"

    "BBB"

    Returns: 25

  9. "BB.B"

    "BBBB"

    Returns: 2161

  10. "....B"

    "....."

    Returns: 0

  11. ".BBBBB"

    "BB.B.B"

    Returns: 693601

  12. "..B.B.B"

    "B......"

    Returns: 1

  13. "..BB...."

    "..BBB.BB"

    Returns: 241

  14. "BBBBBBBBB"

    "...B.BBBB"

    Returns: 808519312

  15. "BBBBB.BBB."

    "..BBBB...."

    Returns: 539870769

  16. "BBBBBBBBBBB"

    "BBBBBBBBBBB"

    Returns: 937136493

  17. ".B.B..BBBBBB..BB.BB.BBBBBBB.B..BBBBBBBBBB.BBBBBBBB"

    "BB...BBBBBB.BB.......B..B.B..BBBBB.BBBB.B.B...B..B"

    Returns: 129281486

  18. "BBBBBBBBBBB..B..BBB.B.B.BB.B..BB..BBBBBB...BBB..BB"

    "BBBBBB.B..BBBBBB.BBBBB.BBBBBBBBBBBBBBBBBBBBBBB.BBB"

    Returns: 198164562

  19. "BB.BBBBBBB.B.BBBBBBBBBBBBBBB.BB.BBBBBBB.BB.B.BBB.."

    "....B......B.BBB....B.B...B..B.B....B.B..BB...BBB."

    Returns: 117336016

  20. "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

  21. "B.B..BB..B...B..B.B.B........B...BB.B.B....BB....."

    "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 707684650

  22. "B.B.BBBB.BB.BB.BBB.BBBBB..BBBB..BBBBB.BB.B.BBB...B"

    ".................................................."

    Returns: 0

  23. "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

  24. "...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

  25. "BBB.BBBBBBBBBB.BBBB.BBBBBBBBBBBBBBBBBBB.BBBBBBBBBB"

    "...BB......B.B...B.......B.B.....B..BB...B.....B.."

    Returns: 114981542

  26. ".................................................."

    "..............................................."

    Returns: 1

  27. "................B.........B..B.......B.....B..."

    "..B.B..BBBBB.BBB.BBBB.BBBBBBBBB..BBBBBBBBBBBBBBBBB"

    Returns: 368743830

  28. "..........B.B......BBB...B....BB....B.....BBBB.BB."

    "B.B.B.B.B..B.BB.BBBB.BBBBB.B.BBBB.BBBBBBBB.B.BBBBB"

    Returns: 914702785

  29. "...BB.B.BB.B..BB.B.B..BBBB.B.B.BBBBBB.BB.BB.BBBB"

    "......................................B........."

    Returns: 1

  30. ".........B...................B..........B....."

    "......B.............B.........B....B..B.B..B.B..B"

    Returns: 40294561

  31. "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    "................................................."

    Returns: 0

  32. ".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

  33. "BBBBBBBBBBBB.BBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBB"

    ".B...BB...B.BB..B.....BBBBB...B.BB..BBBB.BBBB."

    Returns: 587037358

  34. "BB...BB....BB.B.B..B..B..B...BBBB.B.......B..BB."

    "B.BBBBBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBB.BBBBBBBBBB"

    Returns: 964511516

  35. "...B......BB..B..BB.B.B......BBB..BB.......B..."

    "BB.BB.BBBBBBBBB.BBB.BBBBBB.BB.B....BBBB.BB.BBB.."

    Returns: 644091315

  36. "................................................."

    "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 0

  37. "BBBBBBB.B.B.BBBBBBBBBBBBBB.BBBBB.BBBBBBBBBBB.B.B"

    ".......B.B........B.........B......BB.BB.BB....BB."

    Returns: 62120195

  38. "BBBBBBBBBBB.BB..BBBBB..BBBBB.BBBBBBB..BBBBB.BB"

    "....BBBB.BB...B..B.B.B...B.B.....B.........BB...."

    Returns: 712765117

  39. "BBBBB.BBB.BBB.BBBBBBBBBBBBBBB..B.B.BBBBBBBBBBBBBB"

    "BB.BBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 983817538

  40. "BBBBBBBBBBBBBBBBBBBB.BBBBB.BBBBBBBBBBBBBBB.BBBBBB"

    "BBB....BB..BBB..B.B.....B.BB..B...BB.BB.B...BB"

    Returns: 700085142

  41. "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 514424726

  42. "B...BBB.B.B.B.BBBB....B.BBB..B..BBBBBBBB.B.BB."

    ".B.B...BB...B...B.......B...BB.B.BBB........BB"

    Returns: 859561642

  43. "B.B..B..BB..........BB.B.......BB.BB....BB.B.BB.."

    "BBBBBBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 239531839

  44. "BBBB...BB.BBB.BBBBBB.BBBB..BB.BB..BBBB.BBBBBBB..B."

    "BBBBBBBBBBBBBBBBBBBBBBBBBBB..BBBBBBBBBBBBBBB.BBBB"

    Returns: 795333334

  45. "B..BB.B....B..B....B........B........B..BB.B.B"

    ".......B..BBBBB.B..B...............B...B.....B.B."

    Returns: 648612683

  46. "................................................."

    ".BBBBB.B..BB.BBBBBB..B.BB.BBBBBBBBB.BBBBBBBBBBB"

    Returns: 0

  47. "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

  48. "BBBB.BBBBBBBBBBBB.BB.BBBBBBBBBBBBBBBB.BBBBBBBB."

    "BBBBBBB.BBBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBBBB."

    Returns: 599207480

  49. "BBBBBBBBBB.B.BBBBBBBBBBBBBBBBBBBBBBBBB.BB.BBBB"

    ".BB.....BB...B.BBB.....B.BBB....B....BB.B.B....."

    Returns: 493833081

  50. "...BBBBBB...BBB..B...B.BBBBBB.B..B.B.B..B.B.BBBB.B"

    "......B.BB..B.....B.B.....BBB.B.B..BB.........."

    Returns: 626962625

  51. "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    ".BBBBBBBBBBBBB.BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 514424726

  52. "BB..B...B.BBBBBBBBBBBB.BBBBBBBBB.B.B....B..BBBB.B."

    ".BB.B.BBBBB.BBBBBBBBBBBBBBBBBBBBBBBBB.BBBBBBBB"

    Returns: 960773581

  53. ".B...B.BB...B.....BBBBBB..BB.B...........B....B"

    ".............................................."

    Returns: 0

  54. "B.BBBBBBBBB.B..BBBB.BBBB.BBB.B.BBBBB.BBBB.BBBB."

    "B.BB..B..B.....B.....B.BB.......B..B...B......B."

    Returns: 478856627

  55. ".......B.......BB................................B"

    ".B....BB.B..BB.BBB...BB.BB...B..BB.B..B.BB...."

    Returns: 357570322

  56. "."

    "."

    Returns: 1

  57. "."

    "B"

    Returns: 0

  58. "B"

    "."

    Returns: 0

  59. "B"

    "B"

    Returns: 1

  60. "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 676170171

  61. ".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

  62. "..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

  63. "BB.BBBBBBBBBBBBBBBBB......BBBBBBBBBBB"

    "..........BBB.......BBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 584526190


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: