Statistics

Problem Statement for "PairProduct"

Problem Statement

Paola has an array of integers. The array is called A and its length is n. The elements of A have indices between 0 and n-1, inclusive.

Paola's favorite number is the long p. Can Paola multiply two elements of her array to get the product p?

If there are two (not necessarily distinct) indices i, j into Paola's array such that A[i] * A[j] = p, return the int[] {i, j}. (I.e., a int[] with two elements, the first of which is i and the second of which is j.) If there are multiple solutions, you may return any one of them. If there is no solution, return an empty int[] instead.

In order to keep the input size small, you are not given Paola's array explicitly. Instead, you have to generate it using some very simple pseudocode. You are given the ints n, a0, and step. Generate Paola's array as follows:

A[0] = a0
for i = 1 .. n-1:
    A[i] = A[i-1] + step

Definition

Class:
PairProduct
Method:
findPair
Parameters:
int, int, int, long
Returns:
int[]
Method signature:
int[] findPair(int n, int a0, int step, long p)
(be sure your method is public)

Notes

  • This problem does have general solutions that work for any array A of the given size. Using the special form of the values in the array is not necessary.

Constraints

  • n will be between 1 and 100,000, inclusive.
  • a0 will be between -10^9 and 10^9, inclusive.
  • step will be between -10^9 and 10^9, inclusive.
  • a0 and step will be such that all elements of A will be between -10^9 and 10^9, inclusive.
  • p will be between -10^18 and 10^18, inclusive.

Examples

  1. 6

    2

    5

    14

    Returns: {0, 1 }

    Paola's array is A = {2, 7, 12, 17, 22, 27}. The number 14 is the product of A[0] and A[1]. Note that {1, 0} is also a valid return value.

  2. 6

    2

    5

    144

    Returns: {2, 2 }

    The indices into A don't have to be distinct.

  3. 6

    2

    5

    47

    Returns: { }

    No two elements of this array have the product 47.

  4. 6

    -200000

    -500000

    2040000000000

    Returns: {2, 3 }

    This time Paola's array is {-200000, -700000, -1200000, -1700000, -2200000, -2700000}. The value 2040000000000 is A[2] * A[3]. Watch out for integer overflow.

  5. 20

    -5

    1

    -6

    Returns: {2, 7 }

    The desired product p may be negative. In this case, A = {-5,-4,-3,...,14} and the returned value corresponds to the fact that A[2] * A[7] = (-3) * 2 = (-6). There are other correct answers as well.

  6. 20

    -5

    1

    0

    Returns: {5, 5 }

  7. 1

    0

    47

    0

    Returns: {0, 0 }

  8. 100000

    0

    0

    0

    Returns: {0, 0 }

  9. 100000

    0

    0

    1

    Returns: { }

  10. 100000

    0

    0

    -1

    Returns: { }

  11. 100000

    2

    1

    1

    Returns: { }

  12. 100000

    722004112

    10

    522039811160593824

    Returns: {4348, 99506 }

  13. 100000

    -13033

    1

    0

    Returns: {13033, 13033 }

  14. 100000

    -251147556

    -100

    -8524211560286888

    Returns: { }

  15. 100000

    -95520

    10

    0

    Returns: {9552, 9552 }

  16. 100000

    42385974

    5

    1809325506661576

    Returns: {1990, 58180 }

  17. 100000

    -409519030

    10000

    206645634256140900

    Returns: {75989, 99931 }

  18. 100000

    -47

    0

    2209

    Returns: {0, 99999 }

  19. 100000

    452640682

    -50

    201397621624650924

    Returns: {61840, 92822 }

  20. 100000

    406647323

    -10000

    -104646528473803671

    Returns: {7062, 71807 }

  21. 100000

    722004112

    10

    73286783806858534

    Returns: { }

  22. 100000

    -855765286

    100

    728731373577874596

    Returns: {18406, 23746 }

  23. 100000

    -855765286

    100

    715846773885125796

    Returns: {96880, 96880 }

  24. 100000

    794808693

    1000

    681522389052078249

    Returns: {30735, 30735 }

  25. 100000

    406647323

    -10000

    11541803566329

    Returns: {40325, 40325 }

  26. 100000

    -409519030

    10000

    -102874365336359100

    Returns: {10576, 74819 }

  27. 100000

    722004112

    10

    522116165490377384

    Returns: {34734, 79663 }

  28. 100000

    -157294345

    1

    24738911249671665

    Returns: {3100, 13428 }

  29. 100000

    816367118

    -4

    665935253679042860

    Returns: {61737, 97540 }

  30. 100000

    -848617825

    -1

    0

    Returns: { }

  31. 100000

    143754

    -2

    0

    Returns: {71877, 71877 }

  32. 100000

    781658391

    -1000

    510674600354428881

    Returns: {64839, 69241 }

  33. 100000

    887959676

    4

    788842169083951632

    Returns: {31322, 72778 }

  34. 100000

    -480204100

    2

    230458674039187888

    Returns: {49041, 93942 }

  35. 17

    -997868077

    123456789

    729288258927802564

    Returns: {15, 15 }

  36. 100000

    42385974

    5

    1816251812383316

    Returns: {19555, 73142 }

  37. 100000

    -73065678

    50

    5183327438063584

    Returns: {16760, 26039 }

  38. 100000

    242001581

    3

    58635752073285688

    Returns: {12725, 85039 }

  39. 100000

    887959676

    4

    788760359430337840

    Returns: {34286, 46784 }

  40. 100000

    -480204100

    2

    230521181387438736

    Returns: {4358, 73523 }

  41. 100000

    816367118

    -4

    -6250182107152840

    Returns: { }

  42. 100000

    452640682

    -50

    203444372275878724

    Returns: {31852, 31852 }

  43. 100000

    -157294345

    1

    24727977638691040

    Returns: {5360, 80681 }

  44. 100000

    970309599

    -2

    941239284200566129

    Returns: {67363, 67363 }

  45. 100000

    781658391

    -1000

    -207185372739983255

    Returns: { }

  46. 100000

    -660235892

    -2

    0

    Returns: { }

  47. 100000

    970309599

    -2

    78191478241249762

    Returns: { }

  48. 100000

    -157294345

    1

    -24083210393580390

    Returns: { }

  49. 100000

    242001581

    3

    42056479114130916

    Returns: { }

  50. 100000

    -409519030

    10000

    46468365365590267

    Returns: { }

  51. 100000

    -73065678

    50

    4924696317969784

    Returns: {24118, 90673 }

  52. 100000

    235324427

    -3

    55288975494893329

    Returns: {25686, 99862 }

  53. 100000

    42385974

    5

    1820432101645496

    Returns: {33178, 79103 }

  54. 100000

    816367118

    -4

    665937782031012100

    Returns: {79252, 79252 }

  55. 100000

    970309599

    -2

    941307161338565249

    Returns: {31160, 68584 }

  56. 17

    -997868077

    123456789

    368534203445232400

    Returns: {13, 13 }

  57. 100000

    970309599

    -2

    941333425831919451

    Returns: {30151, 56058 }

  58. 100000

    -73065678

    50

    5244769086125284

    Returns: {12898, 12898 }

  59. 100000

    -244315921

    -1

    -4030398852352815

    Returns: { }

  60. 100000

    47

    0

    0

    Returns: { }

  61. 100000

    722004112

    10

    522510072499410724

    Returns: {84447, 84447 }

  62. 100000

    452640682

    -50

    203106844044354624

    Returns: {2913, 75617 }

  63. 100000

    -403513211

    -1234

    0

    Returns: { }

  64. 100000

    235324427

    -3

    55362711064226314

    Returns: {4623, 16448 }

  65. 100000

    415239213

    10

    0

    Returns: { }

  66. 100000

    75350

    -10

    0

    Returns: {7535, 7535 }

  67. 100000

    816367118

    -4

    666218433976684356

    Returns: {28645, 43889 }

  68. 17

    993982394

    -123456789

    -1522444746698672

    Returns: {8, 10 }

  69. 100000

    42385974

    5

    1806043370909761

    Returns: {22319, 22319 }

  70. 100000

    -244315921

    -1

    59706756830814921

    Returns: {33740, 33740 }

  71. 100000

    208970986

    -5

    43637675016298276

    Returns: {14932, 14932 }

  72. 100000

    -855765286

    100

    728904584250430396

    Returns: {5465, 34634 }

  73. 100000

    -73065678

    50

    4922791315174144

    Returns: { }

  74. 100000

    794808693

    1000

    701884653185818249

    Returns: {6118, 81532 }

  75. 100000

    -480204100

    2

    90948318089801475

    Returns: { }

  76. 100000

    816367118

    -4

    666229813163870076

    Returns: {14436, 54611 }

  77. 100000

    452640682

    -50

    202064349614442624

    Returns: {41285, 83665 }

  78. 100000

    47

    0

    2209

    Returns: {0, 99999 }

  79. 100000

    -47

    0

    -2209

    Returns: { }

  80. 100000

    208970986

    -5

    43555636902243821

    Returns: {28957, 79473 }

  81. 100000

    -251147556

    -100

    64537862227148336

    Returns: {58, 58184 }

  82. 100000

    -1650

    2

    0

    Returns: {825, 825 }

  83. 100000

    235324427

    -3

    55315806517651876

    Returns: {43767, 43767 }

  84. 100000

    781658391

    -1000

    511168577249415881

    Returns: {59452, 73871 }

  85. 100000

    -244315921

    -1

    59706047149635075

    Returns: {8194, 56384 }

  86. 17

    993982394

    -123456789

    539361943417673104

    Returns: {14, 14 }

  87. 100000

    406647323

    -10000

    92592470271566329

    Returns: {2910, 16140 }

  88. 100000

    -106705214

    1234

    0

    Returns: {86471, 86471 }

  89. 100000

    452640682

    -50

    -5448716734111028

    Returns: { }

  90. 100000

    -480204100

    2

    230464946658257696

    Returns: {46326, 90124 }

  91. 100000

    -244315921

    -1

    59719549243139226

    Returns: {45018, 74813 }

  92. 100000

    242001581

    3

    58640241445193185

    Returns: {33138, 70794 }

  93. 17

    -997868077

    123456789

    -542287720858880606

    Returns: { }

  94. 100000

    887959676

    4

    788509723572490000

    Returns: {5256, 5256 }

  95. 100000

    970309599

    -2

    941276097725356875

    Returns: {41362, 74391 }

  96. 100000

    -349879470

    -10

    0

    Returns: { }

  97. 100000

    235324427

    -3

    55288063662615634

    Returns: {31275, 95570 }

  98. 100000

    13831906

    -1234

    0

    Returns: {11209, 11209 }

  99. 100000

    -480204100

    2

    230444699767833600

    Returns: {78770, 78770 }

  100. 100000

    781658391

    -1000

    551940575970520881

    Returns: {1308, 74360 }

  101. 100000

    781658391

    -1000

    476873653618072881

    Returns: {91098, 91098 }

  102. 100000

    242001581

    3

    58649663854188700

    Returns: {50275, 66623 }

  103. 100000

    728290065

    -10

    371565487414807261

    Returns: { }

  104. 17

    -997868077

    123456789

    -641302945143027242

    Returns: {2, 15 }

  105. 100000

    -818618729

    1

    0

    Returns: { }

  106. 100000

    208970986

    -5

    43497903269787041

    Returns: {68077, 95709 }

  107. 100000

    728290065

    -10

    529324726471329325

    Returns: {67007, 81593 }

  108. 100000

    66783

    -1

    0

    Returns: {66783, 66783 }

  109. 100000

    235324427

    -3

    -3087028708297046

    Returns: { }

  110. 17

    993982394

    -123456789

    -665985226996983663

    Returns: { }

  111. 100000

    -251147556

    -100

    67444846248519936

    Returns: {85539, 85539 }

  112. 17

    -997868077

    123456789

    806543353728643398

    Returns: { }

  113. 100000

    728290065

    -10

    530081577199777725

    Returns: {9777, 34831 }

  114. 100000

    406647323

    -10000

    2866924282826329

    Returns: {11610, 39678 }

  115. 100000

    -409519030

    10000

    -20691330227459100

    Returns: {35802, 81130 }

  116. 100000

    -855765286

    100

    727961551171408596

    Returns: {2715, 48397 }

  117. 100000

    728290065

    -10

    529600644958727925

    Returns: {10848, 99806 }

  118. 17

    993982394

    -123456789

    237655347150857476

    Returns: {12, 12 }

  119. 100000

    748826206

    1234

    0

    Returns: { }

  120. 100000

    887959676

    4

    788983660265695584

    Returns: {69819, 74104 }

  121. 100000

    -73065678

    50

    5032611480218784

    Returns: {23156, 61575 }

  122. 100000

    406647323

    -10000

    -177728279295897851

    Returns: { }

  123. 100000

    242001581

    3

    58607964644090761

    Returns: {29746, 29746 }

  124. 100000

    -157294345

    1

    24719308574262291

    Returns: {54856, 86326 }

  125. 100000

    -251147556

    -100

    66138277638624336

    Returns: {51426, 69126 }

  126. 100000

    -244315921

    -1

    59722529867040138

    Returns: {59462, 72565 }

  127. 100000

    794808693

    1000

    736867352385660249

    Returns: {44346, 83298 }

  128. 100000

    794808693

    1000

    705424674695727249

    Returns: {19734, 71229 }

  129. 100000

    208970986

    -5

    11075768896910708

    Returns: { }

  130. 100000

    -251147556

    -100

    64314238696518336

    Returns: {14165, 34977 }

  131. 100000

    -855765286

    100

    -268517534633000294

    Returns: { }

  132. 100000

    -409519030

    10000

    107814359499940900

    Returns: {73787, 73787 }

  133. 100000

    -157294345

    1

    24741485487301696

    Returns: {81, 81 }

  134. 100000

    42385974

    5

    985256700409300

    Returns: { }

  135. 17

    993982394

    -123456789

    742573250210425504

    Returns: {0, 2 }

  136. 100000

    887959676

    4

    -69283395957452050

    Returns: { }

  137. 100000

    208970986

    -5

    43579118178708651

    Returns: {34109, 51835 }

  138. 100000

    722004112

    10

    522048395059362864

    Returns: {47916, 57095 }

  139. 100000

    -19436885

    2

    0

    Returns: { }

  140. 100000

    794808693

    1000

    -659482178283924411

    Returns: { }

  141. 100000

    728290065

    -10

    529362899597157025

    Returns: {71677, 71677 }

  142. 10

    0

    0

    0

    Returns: {0, 0 }

  143. 5

    0

    0

    5

    Returns: { }

  144. 10

    0

    1

    2

    Returns: {1, 2 }

  145. 100000

    0

    1

    100000000000000000

    Returns: { }

  146. 1

    1000000000

    1

    1000000000000000000

    Returns: {0, 0 }

  147. 100000

    1

    0

    100000

    Returns: { }

  148. 100000

    10

    10

    10000

    Returns: {0, 99 }

  149. 6

    0

    0

    20

    Returns: { }

  150. 100000

    1

    1

    -1

    Returns: { }

  151. 2

    0

    0

    0

    Returns: {0, 0 }

  152. 5

    10

    0

    100

    Returns: {0, 4 }

  153. 1

    10

    10

    1001

    Returns: { }

  154. 100000

    1

    1

    9999700002

    Returns: {99997, 99998 }

  155. 100000

    1

    1

    1000000000000000000

    Returns: { }

  156. 111

    0

    0

    0

    Returns: {0, 0 }

  157. 100000

    0

    1

    0

    Returns: {0, 0 }

  158. 1

    2

    0

    5

    Returns: { }

  159. 4

    1

    1

    9

    Returns: {2, 2 }

  160. 111

    0

    1

    5

    Returns: {1, 5 }

  161. 2

    2

    2

    13

    Returns: { }

  162. 5

    -4

    2

    10

    Returns: { }

  163. 20

    0

    1

    10

    Returns: {1, 10 }

  164. 100

    0

    0

    1000

    Returns: { }

  165. 5

    5

    0

    25

    Returns: {0, 4 }

  166. 100000

    -99999

    1

    1

    Returns: {99998, 99998 }

  167. 100000

    -1000

    1

    1000000007

    Returns: { }

  168. 2

    5

    -5

    1

    Returns: { }

  169. 1

    0

    0

    0

    Returns: {0, 0 }

  170. 1

    0

    1

    0

    Returns: {0, 0 }

  171. 100000

    0

    0

    1000007

    Returns: { }

  172. 5

    -7

    5

    14

    Returns: {0, 1 }

  173. 3

    0

    1

    2

    Returns: {1, 2 }

  174. 7

    0

    1

    9

    Returns: {3, 3 }

  175. 100000

    0

    1

    -1

    Returns: { }


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: