Statistics

Problem Statement for "FoxAndMountain"

Problem Statement

Fox Ciel lives in a beautiful countryside. She loves climbing mountains. Yesterday, she went hiking in the mountains.


Her trip can be described as a sequence of (n+1) integers: h[0], h[1], ..., h[n]. These values represent altitudes visited by Fox Ciel during the trip, in order. Fox Ciel does not remember the precise sequence, but she remembers the following:
  • for each i, h[i] >= 0
  • h[0] = 0
  • h[n] = 0
  • for each i, abs(h[i+1]-h[i]) = 1



The last condition means that in each step the altitude of Fox Ciel either increased by 1, or decreased by 1. We will call the two types of steps "steps up" and "steps down", respectively. Steps up will be denoted 'U' and steps down will be denoted 'D'.


You are given the int n: the length of the trip. In addition to the length, Fox Ciel remembers some contiguous segment of her trip. You are given this segment as a String history. Each character of history is either 'U' or 'D'.


Let X be the number of different trips that match everything that Fox Ciel remembers. (Note that she may be mistaken, hence X may also be zero.) Compute and return the value (X modulo 1,000,000,009).

Definition

Class:
FoxAndMountain
Method:
count
Parameters:
int, String
Returns:
int
Method signature:
int count(int n, String history)
(be sure your method is public)

Constraints

  • n will be between 1 and 50, inclusive.
  • history will contain between 1 and n characters, inclusive.
  • Each character in history will be either 'U' or 'D'.

Examples

  1. 4

    "UUDD"

    Returns: 1

    Fox Ciel remembers the entire history of her trip. The corresponding sequence of altitudes is {0, 1, 2, 1 ,0}.

  2. 4

    "DUUD"

    Returns: 0

    Fox Ciel is mistaken. As n=4 and history="DUUD", the corresponding sequence of altitudes has to be {0, -1, 0, 1, 0}. However, all altitudes must be non-negative, so there is no matching trip.

  3. 4

    "UU"

    Returns: 1

    The complete history must be "UUDD".

  4. 49

    "U"

    Returns: 0

    It is not hard to see that for an odd n the answer has to be 0.

  5. 20

    "UUUDUUU"

    Returns: 990

  6. 30

    "DUDUDUDUDUDUDUDU"

    Returns: 3718

  7. 50

    "U"

    Returns: 946357703

    Don't forget to use the modulo operations during the calculation.

  8. 42

    "DDDDUUUUDDDDDUDDDDDDDUUDDUDDDD"

    Returns: 0

  9. 48

    "DDDDDDD"

    Returns: 11210520

  10. 11

    "D"

    Returns: 0

  11. 38

    "UUUUUUUUUDUUU"

    Returns: 657800

  12. 42

    "DDUUU"

    Returns: 901366256

  13. 9

    "D"

    Returns: 0

  14. 32

    "UDDDUU"

    Returns: 11386309

  15. 20

    "DDDDUDUD"

    Returns: 715

  16. 30

    "D"

    Returns: 9694845

  17. 6

    "U"

    Returns: 5

  18. 14

    "U"

    Returns: 429

  19. 17

    "UD"

    Returns: 0

  20. 50

    "DDDUDUDDDUUUUUUUDDUUUUDDU"

    Returns: 230230

  21. 2

    "D"

    Returns: 1

  22. 4

    "D"

    Returns: 2

  23. 44

    "DUDUD"

    Returns: 632106360

  24. 48

    "UDUD"

    Returns: 922505942

  25. 30

    "DUU"

    Returns: 9678461

  26. 32

    "DUD"

    Returns: 35047098

  27. 22

    "DUDDDDUDDUDUUDDD"

    Returns: 1

  28. 32

    "UUDDUDDDUUDDUUUDUUDDUDUDUUDUUUUU"

    Returns: 0

  29. 28

    "DDDDDDDDDDDDD"

    Returns: 15

  30. 50

    "DDDUDDDDDDDDD"

    Returns: 414926201

  31. 50

    "DDDDDDDUUUUDDDDDDDDDDDUDD"

    Returns: 65780

  32. 14

    "DDDDDDD"

    Returns: 1

  33. 40

    "DDUDUDUDDDD"

    Returns: 86384698

  34. 28

    "DDDDDDDDDDD"

    Returns: 680

  35. 40

    "DDDUDUUDUUUU"

    Returns: 20026662

  36. 49

    "DUDUDUUDDDDDUUDUDUDDDDDDDDDDUDDDDDDDDUDUDD"

    Returns: 0

  37. 22

    "DUDUDDUUDDD"

    Returns: 495

  38. 12

    "DDUUUUDUUD"

    Returns: 0

  39. 32

    "DDUDUDDUUDUDDUDUD"

    Returns: 8007

  40. 14

    "UDUUU"

    Returns: 119

  41. 28

    "UDDUUDDDUUDDDDDDUUDUU"

    Returns: 0

  42. 34

    "UUUUUUUUUUU"

    Returns: 100947

  43. 42

    "UUUUUUUUUUUUUUUU"

    Returns: 65780

  44. 21

    "DDDD"

    Returns: 0

  45. 20

    "U"

    Returns: 16796

  46. 48

    "UDDDDDDDDDDDDUDDDDUDUUU"

    Returns: 14950

  47. 3

    "D"

    Returns: 0

  48. 20

    "D"

    Returns: 16796

  49. 34

    "DDDUDDDDDDDDDDDUU"

    Returns: 18

  50. 30

    "U"

    Returns: 9694845

  51. 4

    "U"

    Returns: 2

  52. 32

    "UDDDDUUDUUD"

    Returns: 319298

  53. 14

    "UDDDDUD"

    Returns: 28

  54. 12

    "DDUUU"

    Returns: 8

  55. 26

    "DDDDDDDDDDDDDDUDDDDD"

    Returns: 0

  56. 42

    "UUUUUUUUUUUU"

    Returns: 14307150

  57. 30

    "UUUDUUUUUU"

    Returns: 54263

  58. 42

    "UUUUUU"

    Returns: 417819120

  59. 18

    "DUUD"

    Returns: 3347

  60. 46

    "DDDUDDDDDDDDDDDDD"

    Returns: 2035800

  61. 18

    "DDDDDDDD"

    Returns: 10

  62. 8

    "DUU"

    Returns: 6

  63. 48

    "DDUUDDDDDDDDDDDDDD"

    Returns: 7888725

  64. 15

    "DUUDDDD"

    Returns: 0

  65. 40

    "DDDDU"

    Returns: 409169930

  66. 2

    "U"

    Returns: 1

  67. 43

    "DUUUUDUUUDDUDUUUUDUD"

    Returns: 0

  68. 4

    "UU"

    Returns: 1

  69. 4

    "D"

    Returns: 2

  70. 4

    "U"

    Returns: 2

  71. 38

    "DDUDUUDUDU"

    Returns: 51586010

  72. 50

    "DDUDDDDDDDDD"

    Returns: 84324081

  73. 42

    "DDDUUDDDDDUDDUDDUDDD"

    Returns: 100947

  74. 36

    "UUUUUUUUUDUUDU"

    Returns: 100947

  75. 28

    "DUUDDDUDDDUDD"

    Returns: 4368

  76. 28

    "DUDDDUDDDUDDDD"

    Returns: 455

  77. 48

    "UUU"

    Returns: 711407953

  78. 12

    "UUU"

    Returns: 81

  79. 18

    "UUU"

    Returns: 4027

  80. 26

    "UDU"

    Returns: 727389

  81. 20

    "DD"

    Returns: 16795

  82. 40

    "DDUDDDDDDDUUDDDDDDDDDDUDDDDDDD"

    Returns: 0

  83. 12

    "D"

    Returns: 132

  84. 32

    "DDUD"

    Returns: 32676651

  85. 6

    "U"

    Returns: 5

  86. 12

    "DD"

    Returns: 131

  87. 20

    "UDDDUDUDUD"

    Returns: 330

  88. 20

    "UDUUDUUU"

    Returns: 715

  89. 26

    "DUUDDUUUUU"

    Returns: 6188

  90. 38

    "UUUDUUU"

    Returns: 322543285

  91. 8

    "U"

    Returns: 14

  92. 8

    "DDDD"

    Returns: 1

  93. 40

    "DUUDDUDDUUUDDDDDDUUDDUUDUUDDDDDUD"

    Returns: 1

  94. 25

    "DDDUUDDDDDDU"

    Returns: 0

  95. 38

    "DDDUDUDDDDDDDDDUD"

    Returns: 26334

  96. 36

    "DDDDDDDDDDUDDDDDDDDD"

    Returns: 0

  97. 8

    "DU"

    Returns: 13

  98. 36

    "UDUUDDUDDDDDDD"

    Returns: 490314

  99. 38

    "DUDDDUUDDUDUUDDDD"

    Returns: 319770

  100. 14

    "DDDUDDDDDDDDDD"

    Returns: 0

  101. 46

    "UUUUUUU"

    Returns: 388724757

  102. 24

    "DUDUUDD"

    Returns: 41036

  103. 32

    "UD"

    Returns: 35357670

  104. 26

    "DDDDDDDDDDDD"

    Returns: 14

  105. 50

    "UD"

    Returns: 946357703

  106. 5

    "U"

    Returns: 0

  107. 2

    "D"

    Returns: 1

  108. 10

    "DD"

    Returns: 41

  109. 28

    "U"

    Returns: 2674440

  110. 48

    "UDDUDDDDUUDUDDDUUUDUDUUDDUDDUUUDDDUD"

    Returns: 286

  111. 38

    "DDDDDUUUUUDDUUUD"

    Returns: 100947

  112. 22

    "UUUUU"

    Returns: 12310

  113. 38

    "UDDUUD"

    Returns: 797662006

  114. 20

    "UDDDDDDD"

    Returns: 286

  115. 50

    "UDUUUUUUUUD"

    Returns: 820800668

  116. 44

    "DUUU"

    Returns: 309319711

  117. 15

    "DDDUDDD"

    Returns: 0

  118. 13

    "D"

    Returns: 0

  119. 36

    "DUDDUDUUDDDUDDDDUDUDDUUDDDDDDDD"

    Returns: 0

  120. 30

    "U"

    Returns: 9694845

  121. 2

    "D"

    Returns: 1

  122. 14

    "UUUD"

    Returns: 302

  123. 44

    "DDDDDDDUDDDDDUDUDUDDDDDDUUDDDUDUDDDDUUU"

    Returns: 0

  124. 22

    "DDU"

    Returns: 57762

  125. 44

    "DUDUDUUUUUDDDDDDDUDUDDDDDD"

    Returns: 11628

  126. 10

    "U"

    Returns: 42

  127. 24

    "DDDUUDDD"

    Returns: 12087

  128. 38

    "DDUDUDDUDDUUDDDDDDUUDDDDUD"

    Returns: 13

  129. 28

    "UUUU"

    Returns: 1693576

  130. 16

    "DDDDDU"

    Returns: 55

  131. 35

    "UUUUUUUUUDUUUUU"

    Returns: 0

  132. 14

    "DDD"

    Returns: 302

  133. 44

    "UUUUDUUUUUDUUU"

    Returns: 44299015

  134. 17

    "DDDDDDDD"

    Returns: 0

  135. 50

    "DDDDDDDDUDDDDDDDDDD"

    Returns: 3365856

  136. 4

    "UU"

    Returns: 1

  137. 16

    "DDUDUUDUDDUDUDD"

    Returns: 0

  138. 50

    "DDUUUDUDUDUDUDUD"

    Returns: 247555533

  139. 50

    "UUUUDDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDDDDUDUD"

    Returns: 1

  140. 48

    "UUDUUDDDU"

    Returns: 549009398

  141. 6

    "D"

    Returns: 5

  142. 48

    "U"

    Returns: 904135723

  143. 44

    "UUDUUDUDU"

    Returns: 168754967

  144. 50

    "UUDDDDUUDUUUU"

    Returns: 460334997

  145. 2

    "UD"

    Returns: 1


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: