Statistics

Problem Statement for "ProductAndProduct"

Problem Statement

This problem has a non-standard time limit: 3 seconds.

There are N boxes in a row. The boxes are labeled 0 through N-1. Box i currently contains C[i] marbles.

Consider all possible ways of distributing M additional marbles into the boxes. We are going to choose one of these ways uniformly at random and we will distribute M additional marbles accordingly.

Formally, we are going to choose one sequence of nonnegative integers X[0], X[1], ..., X[N-1] such that sum(X) = M, and we will increment each C[i] by the corresponding X[i].

Once we distributed all the additional marbles, we will compute the product of the new numbers of marbles in all boxes. Let A/B be the expected value of that product as a reduced fraction, and let P be the prime number 998,244,353. Calculate and return the value (A*B-1) modulo P, where B-1 is the inverse of B modulo P.


You are given the int N, the int[] B, and the ints M and seed. Use the following pseudocode to generate the initial array C:

A[0] = seed
for i=1 to N-1:
    A[i] = (A[i-1]*1103515245 + 12345) modulo 2147483648

C = B
for i=size(B) to N-1:
    C[i] = A[i] modulo 998244353

Definition

Class:
ProductAndProduct
Method:
findExpectedProduct
Parameters:
int, int[], int, int
Returns:
int
Method signature:
int findExpectedProduct(int N, int[] B, int M, int seed)
(be sure your method is public)

Notes

  • Two ways of distributing the marbles (X0,X1,..XN-1) and (Y0,Y1,..YN-1) are considered different if Xi ≠ Yi for some i.

Constraints

  • N will be between 1 and 100,000, inclusive.
  • Number of elements in B will between 0 and min(N, 100), inclusive.
  • Each element of B will be between 0 and 998,244,352, inclusive.
  • M will be between 0 and 100,000, inclusive.
  • seed will be between 0 and 2,147,483,647, inclusive.

Examples

  1. 6

    {}

    9

    1022219453

    Returns: 349570005

  2. 5

    {}

    5

    1888563433

    Returns: 629258651

  3. 9

    {}

    10

    796932720

    Returns: 610929501

  4. 2

    {}

    7

    295050285

    Returns: 714395600

  5. 2

    {}

    8

    162766991

    Returns: 463554205

  6. 4

    {}

    8

    152920465

    Returns: 692953010

  7. 4

    {}

    1

    444077075

    Returns: 102982316

  8. 1

    {}

    10

    330119984

    Returns: 330119994

  9. 9

    {}

    0

    1545006115

    Returns: 283745292

  10. 3

    {}

    3

    478987731

    Returns: 779288826

  11. 8

    {}

    1

    1774577444

    Returns: 862267529

  12. 8

    {}

    10

    1849300380

    Returns: 141151418

  13. 6

    {}

    7

    50952706

    Returns: 101139856

  14. 1

    {}

    2

    258992885

    Returns: 258992887

  15. 4

    {}

    0

    177454525

    Returns: 253423351

  16. 7

    {}

    2

    1742541753

    Returns: 349535076

  17. 8

    {}

    10

    110208823

    Returns: 805466554

  18. 6

    {}

    10

    668058785

    Returns: 585920520

  19. 2

    {}

    9

    1097364796

    Returns: 308835588

  20. 6

    {}

    3

    682981105

    Returns: 353731167

  21. 406

    {}

    15884

    704741586

    Returns: 713438792

  22. 789

    {}

    37628

    1163007587

    Returns: 415103068

  23. 38

    {}

    70112

    204135364

    Returns: 581586422

  24. 460

    {}

    62482

    19368788

    Returns: 606277290

  25. 795

    {}

    18467

    713517418

    Returns: 39726550

  26. 561

    {}

    70056

    1229778221

    Returns: 17900736

  27. 725

    {}

    92893

    1447648699

    Returns: 399134698

  28. 306

    {}

    80013

    2287893

    Returns: 395469819

  29. 55

    {}

    13207

    1807634069

    Returns: 471236698

  30. 504

    {}

    31602

    1132800213

    Returns: 183663772

  31. 625

    {}

    9380

    1607222091

    Returns: 194648518

  32. 487

    {}

    59910

    595510796

    Returns: 428881430

  33. 726

    {}

    9361

    2015587952

    Returns: 645499741

  34. 611

    {}

    78457

    168301972

    Returns: 112917069

  35. 935

    {}

    27766

    945323491

    Returns: 984152990

  36. 294

    {}

    69387

    1799509812

    Returns: 139581596

  37. 159

    {}

    68456

    1201122588

    Returns: 970528295

  38. 599

    {}

    89624

    222303623

    Returns: 302028193

  39. 456

    {}

    99024

    124323254

    Returns: 755681768

  40. 205

    {}

    32813

    787431980

    Returns: 241011807

  41. 814

    {}

    69755

    575830589

    Returns: 548213758

  42. 988

    {}

    37946

    2070698544

    Returns: 622961277

  43. 474

    {}

    83081

    189056825

    Returns: 175524820

  44. 799

    {}

    74778

    1109663416

    Returns: 897480066

  45. 681

    {}

    57013

    854345339

    Returns: 291223169

  46. 815

    {}

    11776

    552840691

    Returns: 718443092

  47. 998

    {}

    31169

    1081548967

    Returns: 53321136

  48. 978

    {}

    21853

    1009584192

    Returns: 487692767

  49. 989

    {}

    78999

    1852213506

    Returns: 962226250

  50. 351

    {}

    25803

    1699237275

    Returns: 223747973

  51. 64459

    {}

    47753

    64024446

    Returns: 577637365

  52. 81320

    {}

    39543

    341327694

    Returns: 951537334

  53. 73887

    {}

    27865

    1700222212

    Returns: 49575972

  54. 88721

    {}

    50778

    1314050517

    Returns: 145351712

  55. 82132

    {}

    29541

    959983105

    Returns: 525395124

  56. 71510

    {}

    28962

    992271122

    Returns: 267171720

  57. 69864

    {}

    81547

    1436450612

    Returns: 530150371

  58. 94850

    {}

    8809

    379201714

    Returns: 424404396

  59. 60869

    {}

    13671

    298590391

    Returns: 383373899

  60. 74362

    {}

    65841

    1721862879

    Returns: 143201900

  61. 88017

    {}

    54638

    1883919179

    Returns: 133923516

  62. 62655

    {}

    91335

    480157480

    Returns: 310527985

  63. 58702

    {}

    36776

    1948521448

    Returns: 354927749

  64. 90796

    {}

    5716

    1855023021

    Returns: 891500837

  65. 66250

    {}

    24506

    999414149

    Returns: 741885876

  66. 74067

    {}

    74669

    1142815375

    Returns: 625780613

  67. 61888

    {}

    84945

    1236183333

    Returns: 564139983

  68. 51153

    {}

    63624

    1395447191

    Returns: 786924261

  69. 54715

    {}

    35085

    1158327331

    Returns: 763659482

  70. 75601

    {}

    79106

    1278648869

    Returns: 567773464

  71. 69936

    {}

    370

    209171647

    Returns: 597073350

  72. 83056

    {}

    41361

    1603564892

    Returns: 531126745

  73. 65458

    {}

    24308

    2088787176

    Returns: 871883915

  74. 98823

    {}

    86433

    530569357

    Returns: 718677960

  75. 82200

    {}

    91661

    1624943436

    Returns: 157954460

  76. 88519

    {}

    37508

    1196172769

    Returns: 687895329

  77. 58833

    {}

    98347

    202599070

    Returns: 407817942

  78. 50001

    {}

    15484

    1047332170

    Returns: 472175271

  79. 91859

    {}

    53446

    1323802407

    Returns: 879735000

  80. 75769

    {}

    21464

    609490347

    Returns: 548839071

  81. 100000

    {}

    98854

    1451607697

    Returns: 526595724

  82. 100000

    {}

    90255

    984575349

    Returns: 677206917

  83. 100000

    {}

    91977

    2111616750

    Returns: 298476886

  84. 100000

    {}

    99708

    1333841391

    Returns: 899798481

  85. 100000

    {}

    93429

    399665943

    Returns: 554837298

  86. 100000

    {}

    92468

    1089641270

    Returns: 174224683

  87. 100000

    {}

    90392

    1893394960

    Returns: 809775300

  88. 100000

    {}

    98727

    968684896

    Returns: 668218399

  89. 100000

    {}

    92818

    1754901535

    Returns: 413222851

  90. 100000

    {}

    98509

    1500954117

    Returns: 176076051

  91. 100000

    {}

    95410

    1778188112

    Returns: 314759848

  92. 100000

    {}

    99900

    515032259

    Returns: 663386494

  93. 100000

    {}

    99100

    1890679793

    Returns: 686753586

  94. 100000

    {}

    95927

    568722363

    Returns: 203831434

  95. 100000

    {}

    97117

    1222609174

    Returns: 176258647

  96. 100000

    {}

    90265

    1797843985

    Returns: 915499075

  97. 100000

    {}

    90120

    577040662

    Returns: 360154143

  98. 100000

    {}

    96358

    489013871

    Returns: 730247129

  99. 100000

    {}

    96923

    1157400076

    Returns: 499505356

  100. 100000

    {}

    96682

    1741032322

    Returns: 54257605

  101. 100000

    {}

    100000

    788911703

    Returns: 733276232

  102. 100000

    {}

    100000

    488419866

    Returns: 555569452

  103. 100000

    {}

    100000

    896600188

    Returns: 19048071

  104. 100000

    {}

    100000

    1745697085

    Returns: 164785502

  105. 100000

    {}

    100000

    752808218

    Returns: 846852793

  106. 100000

    {}

    100000

    1199695763

    Returns: 540916759

  107. 100000

    {}

    100000

    1307394961

    Returns: 330995684

  108. 100000

    {}

    100000

    1677496229

    Returns: 325619228

  109. 100000

    {}

    100000

    50477756

    Returns: 541251578

  110. 100000

    {}

    100000

    1377923188

    Returns: 678774654

  111. 100000

    {}

    100000

    976694394

    Returns: 282569688

  112. 100000

    {}

    100000

    1999691418

    Returns: 44363038

  113. 100000

    {}

    100000

    425349482

    Returns: 279866623

  114. 100000

    {}

    100000

    688905135

    Returns: 85035665

  115. 100000

    {}

    100000

    215926005

    Returns: 381446127

  116. 100000

    {}

    100000

    3686381

    Returns: 555736347

  117. 100000

    {}

    100000

    847118736

    Returns: 881303822

  118. 100000

    {}

    100000

    1280268823

    Returns: 566329748

  119. 100000

    {}

    100000

    1388207426

    Returns: 895007364

  120. 100000

    {}

    100000

    783034773

    Returns: 626793930

  121. 100000

    {}

    100000

    499534436

    Returns: 187211864

  122. 100000

    {}

    100000

    1728354019

    Returns: 47935359

  123. 100000

    {}

    100000

    1478254759

    Returns: 313572488

  124. 100000

    {}

    100000

    1611353644

    Returns: 347824815

  125. 100000

    {}

    100000

    2138075739

    Returns: 214822660

  126. 100000

    {}

    100000

    1782456370

    Returns: 753197820

  127. 100000

    {}

    100000

    512373230

    Returns: 821757339

  128. 100000

    {}

    100000

    1556024688

    Returns: 429645272

  129. 100000

    {}

    100000

    1044261810

    Returns: 467786399

  130. 100000

    {}

    100000

    1964007297

    Returns: 949276326

  131. 100000

    {}

    100000

    1477580770

    Returns: 664642163

  132. 100000

    {}

    100000

    1496216770

    Returns: 752827832

  133. 100000

    {}

    100000

    1648740582

    Returns: 122309744

  134. 100000

    {}

    100000

    168305206

    Returns: 482056157

  135. 100000

    {}

    100000

    2089171414

    Returns: 297982430

  136. 100000

    {}

    100000

    2030096298

    Returns: 757086387

  137. 100000

    {}

    100000

    887390524

    Returns: 33802519

  138. 100000

    {}

    100000

    1345696281

    Returns: 667406314

  139. 100000

    {}

    100000

    1962002513

    Returns: 737027313

  140. 100000

    {}

    100000

    1040500026

    Returns: 30010830

  141. 100000

    {}

    100000

    1683127765

    Returns: 465136461

  142. 100000

    {}

    100000

    838110355

    Returns: 340828020

  143. 100000

    {}

    100000

    1842944005

    Returns: 811181333

  144. 100000

    {}

    100000

    1328194348

    Returns: 271569515

  145. 100000

    {}

    100000

    214126972

    Returns: 377234741

  146. 100000

    {}

    100000

    2084056850

    Returns: 551058434

  147. 100000

    {809781192, 789593200, 154689592, 607589407, 833571747, 350489159, 560096464, 561523319, 372918301, 88516750, 987337805, 866703978, 96823697, 726200118, 55127381, 253401742, 824049134, 183366688, 980462306, 886545980, 92100177, 831925891, 536131234, 103307587, 553966922, 635282063, 459236380, 390559504, 458445945, 486875819, 666635573, 882043408, 19463601, 348041917, 410654833, 918629889, 780408085, 936131320, 791334742, 263710411, 864401670, 555797217, 562082846, 350714094, 76839818, 881541927, 291551968, 968471805, 201596778, 751646022, 792000926, 543766444, 265109103, 270707014, 1655753, 145214447, 943074599, 488619711, 107716602, 995215002, 389641669, 385486588, 494419397, 695423081, 806395773, 86447126, 478474068, 324688946, 334858008, 866799770, 404180009, 899882522, 579654104, 193271550, 996655363, 501285749, 112853262, 883146838, 841270170, 191121877, 690409264, 919299694, 685113998, 815375156, 484845879, 593047506, 543961464, 206171850, 945140901, 183434963, 310791204, 3352622, 325359292, 647961598, 91529912, 843234102, 34013447, 218675674, 402326257, 363380688}

    100000

    1774700473

    Returns: 529295096

  148. 100000

    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

    100000

    1795984462

    Returns: 206885093

  149. 100000

    {998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352, 998244352}

    100000

    1599219247

    Returns: 19005717

  150. 3

    {1, 2, 3}

    0

    0

    Returns: 6

    As M=0, we are not distributing any additional marbles. Formally, the only valid sequence is X = {0,0,0}, so we choose and apply this sequence. The final counts of marbles will be {1, 2, 3}, hence the expected value of their product is 1*2*3 = 6.

  151. 3

    {1, 2, 3}

    1

    0

    Returns: 665496245

    Now M=1, which means that we are adding one extra marble somewhere. After we do so, we will obtain one of the following three arrays C: {2, 2, 3}, {1, 3, 3}, or {1, 2, 4}. Each of these arrays will be generated with probability 1/3. Thus, the expected product is (2*2*3 + 1*3*3 + 1*2*4) / 3 = 29 / 3. We have 3-1 (mod P) = 332,748,118, and therefore the correct return value is (29 * 332,748,118) modulo P.

  152. 4

    {0,0,0,0}

    3

    0

    Returns: 0

    Regardless of how we distribute the three additional marbles, at least one C[i] will remain zero, and therefore the product will remain zero as well.

  153. 100000

    {}

    100000

    369273885

    Returns: 164185046


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: