Statistics

Problem Statement for "TwoRegisters"

Problem Statement

You have a very simple computer whose memory consists only of two registers X and Y. Each of them can store a positive integer. The computer is so simple that it only has two different instructions (between brackets is the name of each instruction):

[X] X := X + Y
[Y] Y := X + Y

As you may have imagined, both instructions compute the sum of both registers and store the result in one of them, overwriting its previous content. A program for this computer is simply a sequential list of zero or more instructions. When a program starts in this computer, both registers are initialized to 1. For instance, if the program is "XXYYX" then the following happens:

  X | Y | ins | execute
----+---+-----+------------
  1 | 1 | [X] | X := X + Y
----+---+-----+------------
  2 | 1 | [X] | X := X + Y
----+---+-----+------------
  3 | 1 | [Y] | Y := X + Y
----+---+-----+------------
  3 | 4 | [Y] | Y := X + Y
----+---+-----+------------
  3 | 7 | [X] | X := X + Y
----+---+-----+------------
 10 | 7 |

You will be given an int r. Return the shortest program for the described computer that makes register X end with value r. Register Y may contain any value. If there are several such programs, return the one that comes earliest lexicographically.

Definition

Class:
TwoRegisters
Method:
minProg
Parameters:
int
Returns:
String
Method signature:
String minProg(int r)
(be sure your method is public)

Notes

  • A String comes lexicographically earlier than another one of the same length if and only if it contains a letter closer the beginning of the alphabet in the first position at which they differ.

Constraints

  • r will be between 1 and 1000000 (106), inclusive.

Examples

  1. 10

    Returns: "XXYYX"

    The example in the problem statement.

  2. 3

    Returns: "XX"

  3. 20

    Returns: "XYYYYXX"

  4. 34

    Returns: "XYXYXYX"

  5. 1000000

    Returns: "XXYXYXYXXYXYXYXXYYXXYXYYXYYXYX"

  6. 999999

    Returns: "XXYXYXXYXYXYXYYXXYXYXYXYYYXYXX"

  7. 999998

    Returns: "XXYXXYXYXXYYXXYXYYXYXYYXYXYXYX"

  8. 999997

    Returns: "XXYXXYYXYXXYXYYXYXYXXYXYXYXXYX"

  9. 999996

    Returns: "XYXXYXYXXYXYXYXYYXXXYYXYXXYXYX"

  10. 999994

    Returns: "XXXXYXXYXXYXXYYXYXYYXYXYXYXYXYX"

  11. 999983

    Returns: "XXYXXYXYXYXYXYXXYXYXXYXXYYXXYX"

  12. 999973

    Returns: "XXYXYXXYXYXXYXXYXYXYXXYYXXYXYX"

  13. 999971

    Returns: "XXYXYXXXYXYXYYXXYXYYXYXYXYXYXX"

  14. 999961

    Returns: "XXYXYXYXYYXYXYXYXXYYXYXYYYXYXX"

  15. 999960

    Returns: "XYXXYXYXYYXXXYYXYXXYXYXYYXYXYX"

  16. 994009

    Returns: "XXYXYXXYXXYYXXYXYXXYXYXYXYYXYX"

  17. 994009

    Returns: "XXYXYXXYXXYYXXYXYXXYXYXYXYYXYX"

  18. 964573

    Returns: "XYXYXYXYYXYXYXXYXYXYXYYXYXYXX"

  19. 964559

    Returns: "XXYXYYXXYXYXXYYXXYYXYYXYXYXYXX"

  20. 964545

    Returns: "XXYYXYXYXYXYXYYXYXXYXYYYXXYXYX"

  21. 926617

    Returns: "XXYXXXYYXXYXYXYXYXYYXYXYXYXXYX"

  22. 925315

    Returns: "XXXYXXYXYXYXYXYYXYXYXXYXYYXYXX"

  23. 707281

    Returns: "XYXYXYXYXXYYYXXYXYYXYXYXYXXYX"

  24. 676188

    Returns: "XXYYXXYYXXYXYYXYXYXYXYYXYXYXX"

  25. 671696

    Returns: "XXXXYXYXXYYXYYXXYXYXYXYXYYXYXX"

  26. 655980

    Returns: "XXXXYXXYXYXXYXYXYXYXYYXXYYXYXX"

  27. 533575

    Returns: "XXXYXYXYYXYXXYXXYXYXXYYXYXYXX"

  28. 318255

    Returns: "XXXYXYXYYYXYYXYXYXYXXYXYXYXX"

  29. 309763

    Returns: "XXYXYXYXXYXXYXYXYXYYXYXYXYX"

  30. 309763

    Returns: "XXYXYXYXXYXXYXYXYXYYXYXYXYX"

  31. 306079

    Returns: "XXXYXYXYXYXYXYXXYYYXYXYXXYYX"

  32. 306079

    Returns: "XXXYXYXYXYXYXYXXYYYXYXYXXYYX"

  33. 273851

    Returns: "XXYXYXYXYXYYXYXXYYXXYXYXXYX"

  34. 262144

    Returns: "XYXXYXYYYXYXYYXYYXYXYXYXYXX"

  35. 234719

    Returns: "XXYXXXYYXYXYXYXXYXYXYXXYXYX"

  36. 182629

    Returns: "XXYXXYXYXYYXYXYYYXYXYYXXYYX"

  37. 182629

    Returns: "XXYXXYXYXYYXYXYYYXYXYYXXYYX"

  38. 181402

    Returns: "XXXYXYYYXYXYXYXYYXYXYXYYXXX"

  39. 180457

    Returns: "XXXYXYXYXYXYXXXYXYYXXYYXXYX"

  40. 180457

    Returns: "XXXYXYXYXYXYXXXYXYYXXYYXXYX"

  41. 174557

    Returns: "XXXYXXYYXYYXYXYXYYXXYYXXYXX"

  42. 174557

    Returns: "XXXYXXYYXYYXYXYXYYXXYYXXYXX"

  43. 172481

    Returns: "XXXXYXYXYXYYXXYXYXYXYXYYXXX"

  44. 172481

    Returns: "XXXXYXYXYXYYXXYXYXYXYXYYXXX"

  45. 130085

    Returns: "XXYYXXXYYXXYYXXYYXYXYXYXYX"

  46. 130079

    Returns: "XYXYXXYXYXXYYXYXYXXYXYXYX"

  47. 130074

    Returns: "XXYYYXYXXYXYXYXYYXXYYXYYXX"

  48. 94249

    Returns: "XYXXYXXYXXYXYXXYXXYXXYXYX"

  49. 94249

    Returns: "XYXXYXXYXXYXYXXYXXYXXYXYX"

  50. 55567

    Returns: "XXYXYXYXXYYXYYYXYXYXYYXX"

  51. 55567

    Returns: "XXYXYXYXXYYXYYYXYXYXYYXX"

  52. 53111

    Returns: "XYXYXYXYXXYXXYXYXYYXYXX"

  53. 53111

    Returns: "XYXYXYXYXXYXXYXYXYYXYXX"

  54. 47502

    Returns: "XXXYXYXXYXYXXYXYYYXYXYXX"

  55. 47501

    Returns: "XXXYXXYXYXYYXYXYXYXYYYXX"

  56. 47500

    Returns: "XXXYXXYXYYXXYXYXXYXYYXYX"

  57. 32768

    Returns: "XYXXYXYXYXYXXYXYXYYXYX"

  58. 32761

    Returns: "XXYXXXYXYYXYXXYXYXXYXYX"

  59. 32761

    Returns: "XXYXXXYXYYXYXXYXYXXYXYX"

  60. 31313

    Returns: "XXYXXXYXYXXYYXXYXYXYYXX"

  61. 31313

    Returns: "XXYXXXYXYXXYYXXYXYXYYXX"

  62. 29929

    Returns: "XXXYXYXYXYYXYXXXYXYXXYX"

  63. 29929

    Returns: "XXXYXYXYXYYXYXXXYXYXXYX"

  64. 24389

    Returns: "XXYXYXYXXYYYXYXXYXYXYX"

  65. 6561

    Returns: "XXYXXYXYXYXYXYXXYYX"

  66. 6222

    Returns: "XYXYYXXYXXYYXYYXXYX"

  67. 6221

    Returns: "XXYXXYXYYXYXYXXYYXX"

  68. 6216

    Returns: "XXYXYXXYXYXXYYXYYXX"

  69. 4096

    Returns: "XYXXYXYXXXYYXYXYXX"

  70. 1024

    Returns: "XXYXXYXYXYXYXXX"

  71. 1012

    Returns: "XXXYXXYYXXYYXYYX"

  72. 1009

    Returns: "XXYXXYXYXYYXXYX"

  73. 1007

    Returns: "XYXXYYXXYYXYYXX"

  74. 1000

    Returns: "XXYYXYYXYXYYXYX"

  75. 997

    Returns: "XXYXYYYXYXYXYXX"

  76. 996

    Returns: "XXXYXXYXYYXYYYXX"

  77. 841

    Returns: "XXXYXXYXYXXYXYX"

  78. 512

    Returns: "XXXYXYXYYXYXXX"

  79. 308

    Returns: "XYXYXXYXYYXX"

  80. 307

    Returns: "XYXYYXYXYYXX"

  81. 303

    Returns: "XYXYXYYXYYXX"

  82. 256

    Returns: "XXYYXXYYXYXX"

  83. 183

    Returns: "XYXXYXXYXYX"

  84. 181

    Returns: "XXYXYXYXXYX"

  85. 178

    Returns: "XXYXYXXYXYX"

  86. 177

    Returns: "XXYXYXYYXYX"

  87. 173

    Returns: "XYXXYYXYYXX"

  88. 169

    Returns: "XXYYXYXYYXX"

  89. 128

    Returns: "XYXXYXYXYX"

  90. 81

    Returns: "XYXYXYYXX"

  91. 64

    Returns: "XXYYXYYXX"

  92. 32

    Returns: "XXXYXYYX"

  93. 29

    Returns: "XXYXYXX"

  94. 16

    Returns: "XYYYXX"

  95. 9

    Returns: "XXXYX"

  96. 8

    Returns: "XYXX"

  97. 7

    Returns: "XXYX"

  98. 6

    Returns: "XXXXX"

  99. 5

    Returns: "XYX"

  100. 4

    Returns: "XXX"

  101. 2

    Returns: "X"

  102. 1

    Returns: ""

  103. 3847

    Returns: "XXXXYXXYXYXXYXYYXYX"

  104. 15061

    Returns: "XXXXYXYXXXYXYXXYXYXYXX"

  105. 37491

    Returns: "XXXXYXXYXYYXXYXYXYXXYYXX"

  106. 38069

    Returns: "XXXXYYXYXXYXYXXYXXYXYYXX"

  107. 39791

    Returns: "XXXXYXXYYXYXXYXYXYXYYXYX"

  108. 59881

    Returns: "XXXXYXYXXYXXYYXXYXYXXYXYX"

  109. 61073

    Returns: "XXXYXYXYXYXXYXYXYYYXXXYYX"

  110. 95831

    Returns: "XXXXYXYYXYXXYYXYYXYXYYXYXX"

  111. 999859

    Returns: "XXXXYYXXYXYXYXYXYYXXYXYXYYXYXXX"

  112. 999517

    Returns: "XXXXYXYXYXYXYXXYYXXYXXYYXYXXYXX"

  113. 998537

    Returns: "XXXXYYXYXXYXYXYXYYXYYXXYXYXXYXX"

  114. 972653

    Returns: "XXXXYYXXYXXYXXYXYXXYXYXYXXYXYXX"

  115. 947369

    Returns: "XXXXYXYYXYYXYXYXYYXYXYXXYXXYYXX"

  116. 944747

    Returns: "XXXXYXYXXYYXYXYXXYXYXYYXXYYXXYX"

  117. 987654

    Returns: "XXXYXXYXYXXYXYXYXXXYYYXXYXYXYXX"

  118. 999977

    Returns: "XXYXYXYXYXYXYYXXYYYXXYXYXYXXYX"

  119. 953124

    Returns: "XXXYXYXYXXXYXYXYXXYXYYXYYXXYXXX"

  120. 999990

    Returns: "XXXXYYXXYXYXYYXYXYXYXYYXYXYYXXX"

  121. 321232

    Returns: "XXYXYXXYXXYXYXYYYXXYXYXXYYXX"

  122. 999763

    Returns: "XXYXYXYXXYYXYXXYYXYYXYYXYXYXYX"

  123. 814239

    Returns: "XXYXXYYYXYYXXYXYXYYXYXYXYXXYXX"

  124. 832038

    Returns: "XXYXYXYXYXYXYXXXYXYXYXYXYXYXX"

  125. 987549

    Returns: "XXXYXYYXYYXYXXYXYXYXXYXXXYXYYXX"

  126. 999898

    Returns: "XXXXYXYXXYXXYXYXYXXYXYYXYXYYXYX"

  127. 99999

    Returns: "XXYXYYXYYXYXYYXYXYXYYXXYX"

  128. 832040

    Returns: "XYXYXYXYXYXYXYXYXYXYXYXYXYXX"

  129. 999979

    Returns: "XXYXYXYXYXXYXYYXXYXYXXXYXYXYXX"

  130. 832039

    Returns: "XXYXYXYXYXYXYYXYXXYXXXYXXYXXYX"

  131. 957867

    Returns: "XXYYXXYXXYYXYXYXYXYXYYXYYXXYXX"

  132. 99988

    Returns: "XYXXYYXXYXYXYYXYYXXYXYYXX"

  133. 997243

    Returns: "XXXXYYXYYXYXXXYXYYXYXYXYXYXYXYX"

  134. 148459

    Returns: "XXYXYXYXYYXXYYXYXYYXYXXYYX"

  135. 948317

    Returns: "XYXXYXXYYXYYXYYXXYYXYXYXYYXYXX"

  136. 978956

    Returns: "XXXYXYXXXYYXYXYXXYXYXYXXYYXXYYX"

  137. 567423

    Returns: "XXYYXXYXYXXYYYXXYXYXYXYYXYXYX"

  138. 999753

    Returns: "XYXYXYXYXXYXYXYXYXYYXXXYXYYYXX"

  139. 100000

    Returns: "XXYYXXXYYXYXYXYXYXYXXYXYX"

  140. 983421

    Returns: "XXYXYYXYXXYXXYXYXYXYYXXYXYYXYX"

  141. 999987

    Returns: "XXYXYXYYXXYXYXYXYXYYXYXYYYXYXX"

  142. 1252

    Returns: "XXXYXXYXYXXYYXYX"

  143. 994758

    Returns: "XXXYXXYYXYXXYXYYXXXYYXYXYXYYXYX"

  144. 979543

    Returns: "XXYXYYXXYXYXYXXYXYXYXYXXYXXYYX"

  145. 948741

    Returns: "XXYXYYXYXYXYXYXXYXYYXXYXXYXYYX"

  146. 12388

    Returns: "XXXYXXYXXYYXYXYXXYXYX"

  147. 836833

    Returns: "XXYXYXXYYXXYYXYXYXYXYYXXXYYXYX"

  148. 869357

    Returns: "XXYXYXXYXXYXYXYYXYYXYYXYXYXYYX"

  149. 1113

    Returns: "XXXYXYXYXYXXYYYX"

  150. 747793

    Returns: "XYXYXXYXYXYXYXXYYYXYXYXYXYYXX"


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: