Statistics

Problem Statement for "AlmostCheckerboards"

Problem Statement

This problem is about bitmaps. All bitmaps in this problem are black-and-white bitmaps with R rows and C columns.

A bitmap is called a checkerboard if it has the property that no two pixels that share a side share the same color: each black pixel must be horizontally and vertically adjacent to only white pixels and vice versa. Clearly, for any dimensions R and C there are exactly two distinct checkerboards.


The checkerboard distance of a bitmap is the minimum number of pixels that have to be edited (i.e., turned from black to white or vice versa) in order to change that bitmap into a checkerboard.

For example, the bitmap shown below (using 'W' and 'B' for white and black pixels) has checkerboard distance 2.

   
   WBWBW
   BWBWB
   BBWWW
   BWBWB

You are given the dimensions R and C and the checkerboard distance D. Count all bitmaps with these parameters, and return that count modulo 10^9 + 7.

Definition

Class:
AlmostCheckerboards
Method:
count
Parameters:
int, int, int
Returns:
int
Method signature:
int count(int R, int C, int D)
(be sure your method is public)

Constraints

  • R will be between 1 and 100, inclusive.
  • C will be between 1 and 100, inclusive.
  • D will be between 0 and 100, inclusive.

Examples

  1. 3

    4

    0

    Returns: 2

    The two perfect checkerboards are shown below: BWBW WBWB WBWB BWBW BWBW WBWB

  2. 3

    4

    47

    Returns: 0

    You can transform any 3x4 bitmap into any other 3x4 bitmap in at most 3x4 = 12 changes, so there clearly won't be any bitmaps with checkerboard distance exactly equal to 47.

  3. 2

    2

    1

    Returns: 8

    The eight bitmaps that match these parameters are precisely all the bitmaps that contains three pixels of one color and one pixel of the opposite color. The edit that turns it into a valid checkerboard is always to find the pixel that has the unique color and to toggle the pixel that is diagonally opposite it to make it match.

  4. 9

    4

    15

    Returns: 135805043

    Remember that the answer should be computed modulo 10^9 + 7. (The exact answer for this test case is 11,135,805,120, and that modulo 1,000,000,007 is 135,805,043.)

  5. 2

    2

    2

    Returns: 6

  6. 100

    100

    100

    Returns: 277296858

  7. 5

    2

    38

    Returns: 0

  8. 5

    4

    2

    Returns: 380

  9. 66

    15

    59

    Returns: 174298992

  10. 7

    6

    68

    Returns: 0

  11. 3

    2

    1

    Returns: 12

  12. 63

    44

    71

    Returns: 562679624

  13. 3

    3

    2

    Returns: 72

  14. 8

    1

    3

    Returns: 112

  15. 6

    1

    44

    Returns: 0

  16. 1

    1

    0

    Returns: 2

  17. 17

    20

    69

    Returns: 481883412

  18. 9

    20

    71

    Returns: 51013034

  19. 4

    2

    0

    Returns: 2

  20. 4

    4

    3

    Returns: 1120

  21. 77

    18

    8

    Returns: 938953264

  22. 10

    3

    15

    Returns: 155117520

  23. 3

    3

    4

    Returns: 252

  24. 4

    3

    1

    Returns: 24

  25. 16

    17

    58

    Returns: 218235347

  26. 6

    2

    11

    Returns: 0

  27. 14

    3

    11

    Returns: 561122696

  28. 38

    1

    19

    Returns: 345263555

  29. 6

    24

    72

    Returns: 922252734

  30. 11

    2

    13

    Returns: 0

  31. 9

    4

    86

    Returns: 0

  32. 16

    11

    2

    Returns: 30800

  33. 2

    2

    0

    Returns: 2

  34. 33

    6

    99

    Returns: 690285631

  35. 8

    6

    86

    Returns: 0

  36. 4

    4

    5

    Returns: 8736

  37. 3

    1

    0

    Returns: 2

  38. 71

    40

    30

    Returns: 440629954

  39. 6

    16

    12

    Returns: 300317601

  40. 12

    39

    6

    Returns: 686267341

  41. 1

    4

    3

    Returns: 0

  42. 20

    70

    43

    Returns: 926106478

  43. 2

    2

    2

    Returns: 6

  44. 4

    2

    4

    Returns: 70

  45. 5

    7

    98

    Returns: 0

  46. 4

    8

    84

    Returns: 0

  47. 12

    1

    6

    Returns: 924

  48. 65

    15

    96

    Returns: 645862819

  49. 4

    4

    7

    Returns: 22880

  50. 3

    1

    2

    Returns: 0

  51. 2

    4

    2

    Returns: 56

  52. 5

    8

    99

    Returns: 0

  53. 20

    71

    74

    Returns: 603443841

  54. 11

    9

    87

    Returns: 0

  55. 4

    4

    0

    Returns: 2

  56. 19

    10

    95

    Returns: 900580233

  57. 4

    4

    9

    Returns: 0

  58. 3

    3

    1

    Returns: 18

  59. 8

    8

    35

    Returns: 0

  60. 56

    73

    66

    Returns: 376136511

  61. 1

    34

    17

    Returns: 333606206

  62. 14

    12

    84

    Returns: 964149357

  63. 17

    16

    25

    Returns: 564860399

  64. 7

    15

    26

    Returns: 647437726

  65. 38

    4

    76

    Returns: 427263280

  66. 13

    2

    66

    Returns: 0

  67. 11

    4

    93

    Returns: 0

  68. 10

    12

    54

    Returns: 765272133

  69. 19

    8

    27

    Returns: 245363747

  70. 46

    4

    92

    Returns: 950548968

  71. 2

    1

    1

    Returns: 2

  72. 32

    6

    96

    Returns: 896058825

  73. 4

    4

    2

    Returns: 240

  74. 17

    8

    14

    Returns: 832162014

  75. 49

    16

    2

    Returns: 613872

  76. 11

    13

    34

    Returns: 728039017

  77. 1

    4

    0

    Returns: 2

  78. 3

    3

    3

    Returns: 168

  79. 98

    35

    79

    Returns: 86767211

  80. 1

    3

    74

    Returns: 0

  81. 2

    20

    8

    Returns: 153809370

  82. 89

    10

    22

    Returns: 709057260

  83. 7

    13

    31

    Returns: 956306082

  84. 74

    11

    72

    Returns: 656062277

  85. 37

    91

    62

    Returns: 196322604

  86. 12

    12

    3

    Returns: 974688

  87. 4

    4

    4

    Returns: 3640

  88. 1

    4

    2

    Returns: 6

  89. 3

    3

    5

    Returns: 0

  90. 3

    4

    4

    Returns: 990

  91. 2

    3

    3

    Returns: 20

  92. 4

    3

    5

    Returns: 1584

  93. 10

    7

    35

    Returns: 358906215

  94. 5

    9

    61

    Returns: 0

  95. 4

    4

    6

    Returns: 16016

  96. 3

    1

    1

    Returns: 6

  97. 3

    2

    0

    Returns: 2

  98. 3

    4

    6

    Returns: 924

  99. 5

    4

    37

    Returns: 0

  100. 8

    9

    95

    Returns: 0

  101. 4

    1

    1

    Returns: 8

  102. 82

    6

    79

    Returns: 782694505

  103. 4

    3

    7

    Returns: 0

  104. 50

    1

    25

    Returns: 605552882

  105. 8

    4

    16

    Returns: 601080390

  106. 8

    10

    32

    Returns: 973945307

  107. 7

    8

    66

    Returns: 0

  108. 4

    4

    8

    Returns: 12870

  109. 19

    12

    67

    Returns: 852330214

  110. 5

    1

    98

    Returns: 0

  111. 54

    46

    38

    Returns: 186037971

  112. 20

    17

    86

    Returns: 218475535

  113. 4

    3

    0

    Returns: 2

  114. 1

    1

    1

    Returns: 0

  115. 9

    13

    39

    Returns: 300396636

  116. 79

    94

    68

    Returns: 866709725

  117. 84

    59

    2

    Returns: 24556980

  118. 2

    1

    0

    Returns: 2

  119. 4

    4

    1

    Returns: 32

  120. 5

    6

    11

    Returns: 109254600

  121. 12

    10

    76

    Returns: 0

  122. 73

    2

    73

    Returns: 910319061

  123. 13

    6

    74

    Returns: 0

  124. 86

    1

    43

    Returns: 203144612

  125. 3

    2

    4

    Returns: 0

  126. 7

    2

    92

    Returns: 0

  127. 31

    92

    7

    Returns: 943888725

  128. 73

    98

    62

    Returns: 270071910

  129. 1

    80

    40

    Returns: 720596125

  130. 19

    19

    1

    Returns: 722

  131. 4

    3

    2

    Returns: 132

  132. 32

    46

    42

    Returns: 989441983

  133. 19

    13

    33

    Returns: 336401201

  134. 14

    3

    21

    Returns: 257870674

  135. 5

    26

    65

    Returns: 883560366

  136. 2

    1

    2

    Returns: 0

  137. 2

    2

    1

    Returns: 8

  138. 4

    2

    3

    Returns: 112

  139. 15

    1

    1

    Returns: 30

  140. 5

    15

    0

    Returns: 2

  141. 3

    4

    3

    Returns: 440

  142. 2

    3

    2

    Returns: 30

  143. 1

    9

    0

    Returns: 2

  144. 2

    4

    1

    Returns: 16

  145. 12

    14

    23

    Returns: 780981562

  146. 2

    2

    3

    Returns: 0

  147. 4

    2

    5

    Returns: 0

  148. 98

    9

    100

    Returns: 447492791

  149. 24

    2

    24

    Returns: 603457371

  150. 6

    18

    40

    Returns: 964099272

  151. 3

    3

    0

    Returns: 2

  152. 76

    13

    85

    Returns: 421123626

  153. 13

    4

    8

    Returns: 505076293

  154. 22

    60

    2

    Returns: 1741080

  155. 16

    14

    46

    Returns: 644256668

  156. 10

    1

    50

    Returns: 0

  157. 1

    2

    1

    Returns: 2

  158. 25

    8

    100

    Returns: 407336795

  159. 9

    20

    100

    Returns: 0

  160. 10

    10

    50

    Returns: 538992043

  161. 4

    1

    2

    Returns: 6

  162. 3

    4

    10

    Returns: 0

  163. 10

    20

    100

    Returns: 407336795

  164. 9

    9

    40

    Returns: 676501747


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: