Statistics

Problem Statement for "BricksN"

Problem Statement

NOTE: This problem statement contains images that may not display properly if viewed outside of the applet.

We have a set of many construction bricks. It contains exactly one base which is simply a special kind of brick of dimensions 1x1xw. We also have a infinite amount of bricks of k different kinds: 1x1x1, 1x1x2, ..., 1x1xk. Formally, for each i between 1 and k, inclusive, we have as many 1x1xi bricks as we need. For simplicity, we will call these bricks "bricks of length i". The following image shows the situation for w=9 and k=3: there is a base of length 9, and three brick types of lengths 1, 2, and 3.



We can stack bricks on top of other bricks (including the base) to form different structures. The design of the bricks forces us to place the bricks at integer positions only. To ensure stability, each brick other than the base must rest completely on a surface composed of other bricks or the base. The following image shows a structure that is invalid for four reasons:



The height of a structure is the number of layers of bricks it contains. The base is not counted into the height of the structure.

Two structures are different if there is a position where they differ in any way. (There are two ways in which two given structures may differ: First, there may be a position where one structure has a brick and the other does not. Second, there may be a position where both structures have bricks, but the bricks are of different types.)

Given are three ints: w, the length of the base, k, the maximum length of your bricks, and h, the maximum height of your structure. Find the total number of different valid structures you can make. Return the total modulo 1000000007.

For example, the following image shows all 83 different valid structures when w = 3, k = 3 and h = 2.


Definition

Class:
BricksN
Method:
countStructures
Parameters:
int, int, int
Returns:
int
Method signature:
int countStructures(int w, int h, int k)
(be sure your method is public)

Constraints

  • w and h will each be between 1 and 50, inclusive.
  • k will be between 1 and w, inclusive.

Examples

  1. 3

    1

    3

    Returns: 13

    The leftmost column in the picture above shows the 13 different structures of height at most 1.

  2. 3

    2

    3

    Returns: 83

    This is the example from the statement.

  3. 1

    5

    1

    Returns: 6

  4. 10

    10

    3

    Returns: 288535435

  5. 1

    1

    1

    Returns: 2

  6. 50

    50

    50

    Returns: 92324271

  7. 50

    1

    50

    Returns: 782204094

  8. 50

    50

    1

    Returns: 370141234

  9. 1

    50

    1

    Returns: 51

  10. 24

    11

    13

    Returns: 226244183

  11. 42

    31

    34

    Returns: 145616060

  12. 33

    7

    17

    Returns: 903406539

  13. 24

    23

    19

    Returns: 226815126

  14. 20

    22

    6

    Returns: 671975329

  15. 39

    31

    32

    Returns: 581268661

  16. 33

    16

    15

    Returns: 447266089

  17. 40

    5

    32

    Returns: 532852082

  18. 18

    4

    5

    Returns: 892978442

  19. 32

    1

    24

    Returns: 680051485

  20. 44

    24

    18

    Returns: 652699350

  21. 47

    21

    3

    Returns: 595660426

  22. 47

    18

    38

    Returns: 577142937

  23. 28

    27

    4

    Returns: 838449365

  24. 36

    12

    20

    Returns: 293540022

  25. 35

    40

    2

    Returns: 923407699

  26. 32

    6

    30

    Returns: 455215822

  27. 40

    26

    29

    Returns: 81640412

  28. 29

    11

    25

    Returns: 946776653

  29. 27

    43

    12

    Returns: 928823009

  30. 26

    33

    21

    Returns: 936515743

  31. 43

    15

    23

    Returns: 675733855

  32. 24

    24

    2

    Returns: 671739533

  33. 39

    14

    16

    Returns: 481294962

  34. 21

    25

    19

    Returns: 218730215

  35. 12

    49

    5

    Returns: 179229393

  36. 45

    6

    38

    Returns: 164259191

  37. 39

    35

    18

    Returns: 548296079

  38. 46

    15

    27

    Returns: 91927671

  39. 10

    44

    7

    Returns: 735940928

  40. 15

    10

    14

    Returns: 482084640

  41. 49

    6

    36

    Returns: 914876095

  42. 44

    22

    34

    Returns: 701421808

  43. 45

    29

    27

    Returns: 318744893

  44. 40

    40

    33

    Returns: 312758978

  45. 42

    24

    29

    Returns: 289635826

  46. 47

    26

    35

    Returns: 447902488

  47. 39

    10

    17

    Returns: 374614459

  48. 41

    12

    22

    Returns: 834618603

  49. 35

    21

    4

    Returns: 482134196

  50. 33

    39

    7

    Returns: 864607600

  51. 48

    38

    48

    Returns: 211888061

  52. 18

    5

    1

    Returns: 955957503

  53. 36

    2

    1

    Returns: 246336683

  54. 20

    27

    14

    Returns: 928370940

  55. 20

    35

    14

    Returns: 340463923

  56. 35

    43

    11

    Returns: 86378826

  57. 43

    41

    18

    Returns: 55222538

  58. 27

    6

    26

    Returns: 147049069

  59. 44

    16

    10

    Returns: 68964478

  60. 48

    40

    44

    Returns: 939938014

  61. 30

    5

    28

    Returns: 859768457

  62. 40

    11

    1

    Returns: 216720791

  63. 44

    27

    22

    Returns: 565058815

  64. 48

    38

    25

    Returns: 952655565

  65. 29

    20

    17

    Returns: 272635618

  66. 33

    21

    32

    Returns: 48682013

  67. 46

    49

    46

    Returns: 417794594

  68. 27

    44

    6

    Returns: 956155233

  69. 35

    21

    33

    Returns: 497283773

  70. 47

    24

    46

    Returns: 919491080

  71. 28

    25

    17

    Returns: 788105544

  72. 29

    29

    7

    Returns: 345872887

  73. 20

    47

    18

    Returns: 385728449

  74. 15

    34

    3

    Returns: 886405943

  75. 32

    3

    17

    Returns: 926357119

  76. 29

    17

    9

    Returns: 679582522

  77. 43

    22

    21

    Returns: 161481729

  78. 9

    7

    3

    Returns: 952392526

  79. 47

    32

    20

    Returns: 407959737

  80. 49

    4

    44

    Returns: 295972292

  81. 39

    34

    5

    Returns: 311372000

  82. 33

    44

    14

    Returns: 915333816

  83. 5

    50

    2

    Returns: 402339917

  84. 23

    11

    20

    Returns: 326809311

  85. 42

    32

    18

    Returns: 912682929

  86. 24

    5

    24

    Returns: 674935388

  87. 44

    9

    6

    Returns: 881367659

  88. 21

    19

    13

    Returns: 550761840

  89. 49

    23

    8

    Returns: 445590405

  90. 19

    7

    1

    Returns: 67049563

  91. 39

    27

    21

    Returns: 759152641

  92. 35

    3

    31

    Returns: 254887395

  93. 5

    26

    5

    Returns: 601868906

  94. 47

    10

    25

    Returns: 344837176

  95. 49

    1

    42

    Returns: 94206927

  96. 46

    7

    11

    Returns: 998595812

  97. 42

    6

    34

    Returns: 553996431

  98. 26

    40

    1

    Returns: 761890566

  99. 47

    25

    13

    Returns: 34799949

  100. 27

    46

    16

    Returns: 305181494

  101. 48

    31

    32

    Returns: 39006546

  102. 44

    21

    14

    Returns: 435658969

  103. 38

    22

    29

    Returns: 837893796

  104. 32

    29

    16

    Returns: 859361536

  105. 24

    9

    6

    Returns: 644523200

  106. 30

    22

    30

    Returns: 89419870

  107. 50

    5

    3

    Returns: 420042817

  108. 39

    29

    20

    Returns: 31507160

  109. 7

    16

    2

    Returns: 206268304

  110. 46

    18

    27

    Returns: 206101859

  111. 37

    19

    6

    Returns: 369521450

  112. 19

    13

    14

    Returns: 114341966

  113. 25

    3

    9

    Returns: 113819288

  114. 31

    46

    15

    Returns: 144830604

  115. 31

    9

    20

    Returns: 975887637

  116. 8

    21

    1

    Returns: 875873158

  117. 44

    48

    44

    Returns: 942955760

  118. 34

    14

    8

    Returns: 472763486

  119. 49

    18

    31

    Returns: 170587802

  120. 46

    48

    15

    Returns: 871992056

  121. 49

    4

    36

    Returns: 366419017

  122. 43

    34

    5

    Returns: 904465261

  123. 38

    44

    11

    Returns: 917275057

  124. 33

    47

    11

    Returns: 816381674

  125. 44

    41

    19

    Returns: 623651007

  126. 38

    7

    14

    Returns: 911507767

  127. 30

    38

    24

    Returns: 638196420

  128. 49

    3

    44

    Returns: 823185529

  129. 35

    10

    1

    Returns: 526144858

  130. 43

    44

    1

    Returns: 168971720

  131. 1

    27

    1

    Returns: 28

  132. 42

    38

    8

    Returns: 891983609

  133. 48

    25

    19

    Returns: 85042131

  134. 40

    16

    8

    Returns: 572621259

  135. 24

    42

    5

    Returns: 101904761

  136. 22

    33

    12

    Returns: 577676589

  137. 16

    1

    12

    Returns: 3524513

  138. 43

    33

    40

    Returns: 329294845

  139. 30

    47

    5

    Returns: 337637190

  140. 39

    36

    36

    Returns: 49889383

  141. 35

    6

    10

    Returns: 410250815

  142. 26

    14

    4

    Returns: 670451582

  143. 31

    18

    28

    Returns: 265222851

  144. 37

    49

    32

    Returns: 362916534

  145. 46

    42

    35

    Returns: 787110412

  146. 35

    37

    29

    Returns: 16373381

  147. 22

    15

    9

    Returns: 687480309

  148. 42

    3

    25

    Returns: 715579780

  149. 48

    5

    9

    Returns: 557998430

  150. 45

    8

    35

    Returns: 520607305

  151. 48

    12

    26

    Returns: 960540959

  152. 30

    13

    7

    Returns: 176027878

  153. 35

    22

    12

    Returns: 384377688

  154. 47

    10

    10

    Returns: 895646169

  155. 40

    34

    5

    Returns: 73943471

  156. 33

    36

    6

    Returns: 78747156

  157. 30

    47

    9

    Returns: 398957235

  158. 49

    34

    44

    Returns: 742371065

  159. 11

    26

    3

    Returns: 368382950

  160. 48

    50

    40

    Returns: 40308775

  161. 47

    50

    41

    Returns: 92850214

  162. 45

    47

    24

    Returns: 860893795

  163. 49

    47

    30

    Returns: 591335981

  164. 46

    46

    33

    Returns: 840110311

  165. 47

    50

    14

    Returns: 632295723

  166. 48

    45

    8

    Returns: 784839805

  167. 50

    45

    43

    Returns: 6088545

  168. 48

    48

    17

    Returns: 793179184

  169. 48

    47

    46

    Returns: 254760344

  170. 45

    46

    40

    Returns: 222861600

  171. 50

    45

    21

    Returns: 361656963

  172. 48

    45

    48

    Returns: 840227117

  173. 50

    47

    41

    Returns: 447089850

  174. 47

    49

    39

    Returns: 238972955

  175. 49

    46

    42

    Returns: 74798210

  176. 46

    45

    17

    Returns: 578814225

  177. 47

    49

    40

    Returns: 80475345

  178. 45

    49

    21

    Returns: 92903800

  179. 48

    48

    4

    Returns: 282743411

  180. 48

    47

    2

    Returns: 242208060

  181. 45

    50

    18

    Returns: 533936012

  182. 47

    46

    5

    Returns: 87692265

  183. 47

    49

    45

    Returns: 590164755

  184. 49

    48

    43

    Returns: 852486670

  185. 50

    48

    42

    Returns: 971818323

  186. 46

    45

    16

    Returns: 133553480

  187. 48

    45

    22

    Returns: 661433485

  188. 49

    45

    38

    Returns: 979969099

  189. 47

    47

    43

    Returns: 756499746

  190. 45

    49

    27

    Returns: 254416013

  191. 50

    49

    47

    Returns: 116403450

  192. 50

    50

    27

    Returns: 607410160


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: