Statistics

Problem Statement for "PerfectRectangles"

Problem Statement

You are given a square board of size NxN. Each 1x1 cell will be colored either black or white. A rectangle on the board is called good if it contains only white cells. A good rectangle is called perfect if it doesn't lie completely within any other good rectangle.
Here's how the board will be colored. You are given ints M, X0, Y0, A, B, C and D. Generate lists X and Y, each of length M, using the following recursive definitions:
X[0] = X0 MOD N
X[i] = (X[i-1]*A+B) MOD N
Y[0] = Y0 MOD N
Y[i] = (Y[i-1]*C+D) MOD N
The board is initially entirely white. Then, for each i, the cell in column X[i] of row Y[i] is colored black. Return the number of perfect rectangles on the board.

Definition

Class:
PerfectRectangles
Method:
numberOfRectangles
Parameters:
int, int, int, int, int, int, int, int
Returns:
int
Method signature:
int numberOfRectangles(int N, int M, int X0, int A, int B, int Y0, int C, int D)
(be sure your method is public)

Notes

  • The same cell can be painted black multiple times.

Constraints

  • N will be between 1 and 2,000, inclusive.
  • M will be between 1 and 4,000,000, inclusive.
  • X0,Y0,A,B,C,D will each be between 0 and 2,000, inclusive.

Examples

  1. 5

    1

    2

    0

    0

    2

    0

    0

    Returns: 4

    One black cell in the center.

  2. 4

    4

    0

    1

    1

    0

    1

    1

    Returns: 6

    Black cells form the diagonal of the square.

  3. 1

    1000000

    1

    2

    3

    1

    4

    7

    Returns: 0

    All cells are black.

  4. 10

    20

    4

    76

    2

    6

    2

    43

    Returns: 12

  5. 91

    2511

    440

    936

    329

    467

    709

    150

    Returns: 48

  6. 755

    301848

    431

    823

    931

    993

    491

    952

    Returns: 495

  7. 441

    2029

    876

    699

    698

    404

    370

    292

    Returns: 728

  8. 497

    61594

    885

    18

    273

    642

    893

    868

    Returns: 847

  9. 753

    221641

    862

    225

    704

    126

    660

    656

    Returns: 2171

  10. 597

    157089

    778

    502

    732

    715

    847

    17

    Returns: 909

  11. 366

    102581

    626

    245

    934

    31

    76

    288

    Returns: 81

  12. 496

    141588

    545

    369

    70

    992

    335

    346

    Returns: 360

  13. 679

    206268

    282

    918

    369

    962

    829

    738

    Returns: 2004

  14. 994

    521050

    525

    907

    80

    102

    517

    532

    Returns: 882

  15. 883

    129679

    364

    642

    304

    964

    921

    682

    Returns: 4631

  16. 71

    4723

    496

    92

    558

    751

    824

    264

    Returns: 363

  17. 1000

    768327

    40

    27

    559

    632

    743

    333

    Returns: 580

  18. 400

    143875

    326

    990

    161

    76

    427

    953

    Returns: 48

  19. 507

    164521

    570

    197

    749

    177

    901

    931

    Returns: 1163

  20. 472

    2987

    654

    744

    559

    900

    139

    397

    Returns: 715

  21. 460

    53554

    326

    599

    37

    568

    477

    527

    Returns: 828

  22. 341

    109400

    460

    649

    176

    321

    998

    592

    Returns: 131

  23. 331

    33780

    467

    109

    785

    894

    911

    392

    Returns: 2479

  24. 778

    303044

    505

    791

    611

    296

    419

    790

    Returns: 1764

  25. 359

    8573

    273

    776

    525

    503

    244

    580

    Returns: 3583

  26. 274

    23230

    329

    90

    465

    192

    670

    975

    Returns: 604

  27. 573

    236433

    777

    560

    612

    445

    175

    441

    Returns: 2045

  28. 848

    213044

    280

    520

    599

    452

    130

    982

    Returns: 137

  29. 88

    1956

    500

    137

    866

    796

    185

    951

    Returns: 238

  30. 252

    3976

    405

    857

    882

    336

    624

    308

    Returns: 14

  31. 919

    556617

    694

    11

    633

    312

    967

    860

    Returns: 4174

  32. 607

    269387

    843

    983

    508

    598

    702

    70

    Returns: 1563

  33. 911

    152401

    275

    158

    575

    998

    407

    240

    Returns: 8700

  34. 138

    7744

    172

    696

    152

    165

    902

    823

    Returns: 28

  35. 1000

    215765

    503

    434

    533

    431

    545

    404

    Returns: 119

  36. 195

    2959

    517

    671

    971

    263

    411

    123

    Returns: 138

  37. 599

    173427

    89

    258

    396

    294

    172

    193

    Returns: 3054

  38. 538

    207245

    251

    781

    651

    285

    690

    96

    Returns: 2239

  39. 363

    14213

    729

    309

    925

    831

    798

    912

    Returns: 4188

  40. 371

    22691

    159

    122

    202

    173

    140

    481

    Returns: 755

  41. 585

    234242

    4

    236

    413

    266

    638

    32

    Returns: 1463

  42. 204

    7760

    4

    166

    995

    470

    305

    173

    Returns: 44

  43. 837

    637425

    799

    305

    410

    451

    622

    192

    Returns: 129

  44. 384

    99432

    169

    511

    269

    480

    42

    822

    Returns: 25

  45. 823

    676372

    620

    184

    472

    99

    972

    175

    Returns: 9420

  46. 852

    277311

    167

    48

    943

    12

    923

    542

    Returns: 16

  47. 53

    923

    255

    205

    142

    484

    18

    703

    Returns: 160

  48. 114

    317

    803

    235

    141

    256

    944

    391

    Returns: 34

  49. 761

    303988

    603

    693

    681

    140

    538

    278

    Returns: 7190

  50. 69

    1669

    571

    674

    444

    354

    276

    636

    Returns: 22

  51. 901

    805346

    925

    29

    69

    798

    129

    98

    Returns: 947

  52. 60

    2606

    104

    157

    736

    31

    197

    567

    Returns: 8

  53. 932

    480534

    897

    624

    602

    623

    460

    548

    Returns: 238

  54. 473

    202212

    493

    185

    248

    734

    572

    123

    Returns: 605

  55. 314

    65313

    522

    405

    741

    983

    306

    25

    Returns: 985

  56. 203

    7312

    816

    644

    831

    936

    742

    158

    Returns: 39

  57. 950

    90633

    433

    32

    199

    466

    995

    357

    Returns: 127

  58. 353

    22607

    828

    782

    873

    92

    103

    471

    Returns: 2869

  59. 510

    122389

    324

    823

    676

    80

    534

    386

    Returns: 281

  60. 122

    5224

    344

    518

    348

    625

    193

    536

    Returns: 62

  61. 387

    141409

    678

    705

    102

    588

    9

    884

    Returns: 142

  62. 635

    81873

    826

    274

    924

    553

    561

    205

    Returns: 359

  63. 103

    146

    961

    510

    355

    436

    956

    648

    Returns: 368

  64. 657

    115404

    120

    221

    926

    671

    826

    57

    Returns: 41

  65. 3

    2

    0

    2

    2

    1

    1

    2

    Returns: 4

  66. 1676

    469443

    1738

    950

    1755

    588

    1002

    403

    Returns: 2323

  67. 1731

    2384971

    1809

    1371

    317

    1077

    1549

    967

    Returns: 4865

  68. 1818

    738605

    1571

    571

    380

    917

    1309

    1437

    Returns: 8131

  69. 1003

    709929

    757

    1973

    1770

    1211

    1012

    1493

    Returns: 23009

  70. 1257

    640687

    1698

    458

    1125

    911

    1866

    1262

    Returns: 2273

  71. 1401

    411702

    484

    1909

    543

    478

    609

    198

    Returns: 4708

  72. 1668

    524728

    1208

    604

    429

    1708

    845

    333

    Returns: 1774

  73. 1747

    2943779

    1900

    409

    1935

    532

    924

    103

    Returns: 22777

  74. 1945

    2090182

    1431

    876

    1688

    1122

    883

    626

    Returns: 21387

  75. 1205

    1412820

    1785

    1024

    1831

    1277

    1187

    1430

    Returns: 502

  76. 2000

    6

    511

    1870

    765

    1323

    167

    1405

    Returns: 23

  77. 2000

    5

    1438

    1956

    834

    1465

    1332

    1677

    Returns: 24

  78. 2000

    9

    375

    601

    36

    1701

    1396

    1489

    Returns: 50

  79. 2000

    6

    851

    1460

    1464

    1186

    1247

    1039

    Returns: 20

  80. 2000

    4

    1361

    404

    1306

    813

    331

    1583

    Returns: 19

  81. 2000

    78

    1460

    447

    446

    757

    1725

    63

    Returns: 373

  82. 2000

    19

    1446

    1850

    1967

    1383

    1750

    1606

    Returns: 23

  83. 2000

    69

    469

    17

    443

    1104

    810

    993

    Returns: 85

  84. 2000

    56

    1538

    1955

    1999

    1262

    651

    1638

    Returns: 213

  85. 2000

    82

    621

    990

    905

    1455

    1309

    1758

    Returns: 100

  86. 2000

    538

    213

    1557

    1372

    1951

    1405

    362

    Returns: 38

  87. 2000

    718

    1480

    967

    504

    90

    521

    1859

    Returns: 5328

  88. 2000

    140

    577

    800

    67

    859

    65

    1601

    Returns: 26

  89. 2000

    982

    1289

    1626

    1035

    1686

    1062

    1759

    Returns: 221

  90. 2000

    591

    1659

    1981

    1012

    333

    1462

    1046

    Returns: 3165

  91. 2000

    5407

    1418

    1138

    1328

    1247

    850

    209

    Returns: 114

  92. 2000

    6692

    50

    827

    1375

    1406

    56

    251

    Returns: 141

  93. 2000

    6559

    1677

    1769

    1283

    91

    658

    142

    Returns: 3446

  94. 2000

    3332

    1298

    1610

    703

    687

    740

    1107

    Returns: 12

  95. 2000

    8145

    1178

    490

    320

    25

    564

    190

    Returns: 26

  96. 2000

    34825

    670

    1278

    426

    791

    963

    1981

    Returns: 1862

  97. 2000

    71763

    1835

    536

    753

    1352

    1968

    1790

    Returns: 1095

  98. 2000

    50604

    1971

    1368

    1366

    576

    1613

    1548

    Returns: 138

  99. 2000

    50076

    833

    1701

    1281

    301

    21

    260

    Returns: 13617

  100. 2000

    99436

    354

    1695

    1819

    964

    682

    1685

    Returns: 28

  101. 2000

    368644

    1002

    486

    503

    234

    1984

    1816

    Returns: 1428

  102. 2000

    803585

    451

    1082

    94

    378

    1377

    286

    Returns: 219

  103. 2000

    433771

    1472

    1533

    67

    336

    1633

    1758

    Returns: 2955

  104. 2000

    957330

    1595

    1312

    37

    699

    1564

    547

    Returns: 683

  105. 2000

    379869

    237

    1027

    1286

    1251

    503

    212

    Returns: 942

  106. 2000

    3153696

    1187

    848

    1313

    612

    940

    60

    Returns: 116

  107. 2000

    2788847

    911

    1614

    4

    1948

    1400

    1459

    Returns: 66

  108. 2000

    2630414

    1073

    1673

    385

    738

    1052

    1681

    Returns: 3717

  109. 2000

    1681664

    1632

    1905

    1203

    1614

    1078

    1586

    Returns: 1106

  110. 2000

    1440905

    193

    182

    66

    634

    74

    1346

    Returns: 49

  111. 2000

    4000000

    653

    1807

    605

    113

    1466

    848

    Returns: 139

  112. 1999

    4000000

    1000

    1

    1

    0

    1

    1

    Returns: 1002995

  113. 2000

    4000000

    1500

    1

    1

    500

    1

    1

    Returns: 1003997

  114. 1999

    91999

    123

    124

    561

    512

    123

    125

    Returns: 22139

  115. 2000

    100000

    787

    667

    565

    444

    367

    447

    Returns: 1801

  116. 1997

    3999999

    42

    19

    17

    17

    13

    98

    Returns: 26727

  117. 2000

    20

    4

    76

    2

    6

    2

    43

    Returns: 133

  118. 1999

    500000

    788

    1566

    1596

    1823

    395

    670

    Returns: 9809

  119. 2000

    4000000

    234

    123

    432

    1232

    232

    1234

    Returns: 136

  120. 1999

    4000000

    61

    17

    19

    11

    7

    3

    Returns: 21460

  121. 2000

    2000000

    2

    4

    7

    3

    5

    6

    Returns: 270

  122. 1989

    3500000

    4

    76

    2

    6

    2

    43

    Returns: 463

  123. 2000

    937421

    432

    769

    232

    123

    212

    943

    Returns: 662

  124. 2000

    200000

    0

    1

    1

    0

    1

    157

    Returns: 37087


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: