Statistics

Problem Statement for "EllysAndXor"

Problem Statement

Elly has a sequence of small positive integers. You are given this sequence in the int[] numbers. The girl wants to place a bitwise AND operator ('&') or a bitwise XOR operator ('^') between each pair of neighboring numbers. Now she wonders what is the maximal result that can be achieved if using optimal placement of operations between the integers?

For this task we will assume that the operations AND and XOR have equal priority (precedence), thus the expression is evaluated left to right. For example, 42 ^ 26 & 38 will be evaluated as (42 ^ 27) & 38 = 49 & 38 = 32. Note, however, that the maximal answer for the numbers (42, 27, 38) is achieved by using the expression 42 & 27 ^ 38 = (42 & 27) ^ 38 = 10 ^ 38 = 44.

Definition

Class:
EllysAndXor
Method:
getMax
Parameters:
int[]
Returns:
int
Method signature:
int getMax(int[] numbers)
(be sure your method is public)

Notes

  • The result of the bitwise operation AND (denoted as '&') applied on two integers is a new integer, having 1-bits on each position where both integers had a 1 in their binary representation, and 0 on all others. For example, 42(10) & 27(10) = 101010(2) & 011011(2) = 001010(2) = 10(10).
  • The result of the bitwise operation XOR (denoted as '^') applied on two integers is a new integer, having 1-bits on each position where exactly one of the integers had a 1 in their binary representation, and 0 on all others. For example, 42(10) ^ 27(10) = 101010(2) ^ 011011(2) = 110001(2) = 49(10).

Constraints

  • numbers will contain between 1 and 10 elements, inclusive.
  • Each element of numbers will be between 1 and 1000, inclusive.

Examples

  1. {42, 27, 38}

    Returns: 44

    The example from the problem statement.

  2. {666, 133, 438, 123, 893, 674, 462, 209}

    Returns: 976

  3. {42}

    Returns: 42

    The result of an expression with a single number equals the number.

  4. {123, 456, 789, 987, 654, 321}

    Returns: 975

  5. {42, 13, 17, 666, 811, 314, 1, 5, 2, 1000}

    Returns: 1007

    Please note that the answer can go over 1000.

  6. {1000}

    Returns: 1000

  7. {666, 666, 666, 666, 666, 666, 666, 666, 666, 666}

    Returns: 666

  8. {666, 666, 666, 666, 666, 666, 666, 666, 666}

    Returns: 666

  9. {1, 2, 4, 8, 16, 32, 64, 128, 256, 512}

    Returns: 1023

  10. {1, 1, 32, 32, 64, 64, 256, 256, 512, 512}

    Returns: 512

  11. {42, 42, 13, 13, 17, 17, 666, 666, 314, 314}

    Returns: 666

  12. {12, 34, 56, 78, 909, 87, 65, 43, 21}

    Returns: 1021

  13. {3, 6, 12, 24, 48, 96, 192, 384, 768}

    Returns: 896

  14. {5, 10, 20, 40, 80, 160, 320, 640}

    Returns: 992

  15. {7, 14, 28, 56, 112, 224, 448, 896}

    Returns: 960

  16. {230, 421, 415, 271, 962, 677, 373, 951}

    Returns: 979

  17. {379, 15, 211, 955}

    Returns: 1003

  18. {573, 982, 296, 730, 591, 750}

    Returns: 851

  19. {224, 186, 398, 84, 542, 770, 288, 78, 373, 417}

    Returns: 954

  20. {968, 564, 565, 740, 377, 633, 287, 111, 823}

    Returns: 919

  21. {520, 708, 174}

    Returns: 686

  22. {295, 694, 678, 227, 588, 371, 740}

    Returns: 1012

  23. {798, 82, 385, 979, 389, 31, 667, 541}

    Returns: 989

  24. {471, 562, 974, 577, 286, 836, 120, 290, 185}

    Returns: 955

  25. {549, 410, 814, 508, 559, 806, 215, 606, 637}

    Returns: 1023

  26. {583, 491, 908}

    Returns: 975

  27. {556, 34}

    Returns: 526

  28. {750, 866}

    Returns: 610

  29. {156, 646, 536, 958, 862, 565, 27, 744}

    Returns: 986

  30. {276, 80, 322, 92, 790, 452}

    Returns: 988

  31. {602, 935, 392}

    Returns: 906

  32. {991, 158, 721, 868, 112, 29}

    Returns: 921

  33. {861, 218, 251, 797, 218, 866, 305}

    Returns: 744

  34. {46, 350}

    Returns: 368

  35. {937, 21, 491, 109, 577, 849, 187, 497, 258, 201}

    Returns: 977

  36. {120, 336, 383, 127}

    Returns: 343

  37. {129, 890, 375, 215, 401, 999, 333, 320, 567, 744}

    Returns: 949

  38. {414, 331, 417, 234, 948, 194, 329, 40}

    Returns: 1021

  39. {903, 972, 736, 573}

    Returns: 857

  40. {646, 810, 110, 575, 151, 649, 403, 349, 635}

    Returns: 950

  41. {207, 417, 621, 72, 511, 451}

    Returns: 887

  42. {943, 955, 905, 427}

    Returns: 566

  43. {474, 314, 932, 157, 395, 327}

    Returns: 789

  44. {403, 569, 660, 125, 802, 478, 948}

    Returns: 1012

  45. {975, 427, 229, 475, 863, 341, 612}

    Returns: 881

  46. {208, 707, 19, 719, 150}

    Returns: 662

  47. {304, 96, 693, 22, 857, 389}

    Returns: 900

  48. {52, 990, 540, 300, 596, 588, 460, 7, 264}

    Returns: 1023

  49. {767, 454}

    Returns: 825

  50. {503, 772, 409, 105, 73, 399, 14, 1, 622, 693}

    Returns: 765

  51. {539, 175, 494, 346, 695, 601, 894, 765}

    Returns: 1005

  52. {843, 162, 124, 128, 947, 539, 38, 184}

    Returns: 663

  53. {450, 865, 156, 265, 78, 25, 394, 630, 620}

    Returns: 753

  54. {227, 50, 415, 513, 517, 593, 522}

    Returns: 607

  55. {739, 433, 16, 344, 556, 574, 831, 445, 728}

    Returns: 1013

  56. {25, 483, 620, 722, 621, 596, 42, 818}

    Returns: 926

  57. {488, 251, 102, 391}

    Returns: 487

  58. {816, 499, 9, 891, 316, 536, 829, 446, 88, 916}

    Returns: 990

  59. {567, 75, 600, 106, 401, 921, 900, 151, 886, 34}

    Returns: 990

  60. {319, 422, 844, 503, 100, 179, 304}

    Returns: 965

  61. {755, 955, 12, 234, 143, 100, 649, 321}

    Returns: 1004

  62. {680, 203, 640}

    Returns: 520

  63. {937, 343, 828, 89, 81, 762, 443, 955, 460, 56}

    Returns: 1021

  64. {855, 382, 680, 680, 386, 961, 38, 366, 785, 650}

    Returns: 979

  65. {328, 756, 966, 197, 213, 58}

    Returns: 942

  66. {871, 865, 337, 683, 327, 410}

    Returns: 823

  67. {95, 478, 106, 174, 338, 777, 378, 422, 379}

    Returns: 1020

  68. {24, 910}

    Returns: 918

  69. {634, 318, 220, 27, 320, 958, 905, 927, 937}

    Returns: 959

  70. {314, 344}

    Returns: 280

  71. {616, 170, 44, 11, 26, 997, 353, 188, 833, 92}

    Returns: 986

  72. {358, 77, 680, 118, 448, 234, 258, 539, 919, 425}

    Returns: 1016

  73. {449, 738, 60, 463, 347, 500, 511, 334}

    Returns: 718

  74. {300, 812, 492, 869, 619, 524, 650}

    Returns: 969

  75. {595, 752, 317, 412, 473, 974, 339, 392, 873, 245}

    Returns: 1012

  76. {77, 248, 115, 966}

    Returns: 1021

  77. {930, 881, 800, 561, 398, 422, 318, 237}

    Returns: 987

  78. {669, 372, 491, 590, 641, 909, 418, 757, 913, 860}

    Returns: 988

  79. {859, 39}

    Returns: 892

  80. {585, 716, 383, 717, 165, 640, 115, 721, 664, 187}

    Returns: 862

  81. {906, 73, 922, 155, 468, 88}

    Returns: 661

  82. {210, 990, 880}

    Returns: 930

  83. {362, 859, 380, 215}

    Returns: 922

  84. {575, 375, 402, 656}

    Returns: 912

  85. {321, 298, 489, 137, 143, 740, 736}

    Returns: 740

  86. {389, 354, 595, 50, 767, 434, 41, 914, 981}

    Returns: 983

  87. {392, 807, 209, 342, 605, 276, 473, 904, 498}

    Returns: 1010

  88. {794, 166, 478, 631, 167, 135, 508}

    Returns: 958

  89. {346, 32, 3, 995, 902}

    Returns: 902

  90. {281, 682, 339}

    Returns: 736

  91. {309, 340, 768, 576, 590, 425}

    Returns: 1001

  92. {898, 796, 471, 30, 831, 764, 389, 601, 18, 157}

    Returns: 983

  93. {236, 262, 85, 919}

    Returns: 983

  94. {724, 309, 904}

    Returns: 924

  95. {582, 139, 247, 699, 992, 750, 232}

    Returns: 988

  96. {160, 182, 696, 518, 635, 593, 744, 679}

    Returns: 743

  97. {900, 456, 607, 786, 613, 98, 821, 750, 11, 671}

    Returns: 879

  98. {742, 541, 585, 434, 248, 969, 367, 58, 880}

    Returns: 890

  99. {710, 170, 481, 178, 741, 933, 1, 146, 765, 187}

    Returns: 951

  100. {755, 837, 700, 293, 567}

    Returns: 1007

  101. {42, 13, 17, 666, 811, 314, 1, 5, 2, 1000 }

    Returns: 1007

  102. {1, 3 }

    Returns: 2

  103. {42, 84 }

    Returns: 126

  104. {1, 2, 4, 8 }

    Returns: 15

  105. {123, 456, 789, 987, 654, 321 }

    Returns: 975

  106. {6, 1 }

    Returns: 7

  107. {1, 2 }

    Returns: 3

  108. {1, 2, 4, 8, 16, 32 }

    Returns: 63

  109. {1, 1, 1 }

    Returns: 1

  110. {42, 27, 38 }

    Returns: 44

  111. {4, 4, 1, 5, 99, 321 }

    Returns: 321

  112. {666, 133, 438, 123, 893, 674, 462, 209 }

    Returns: 976

  113. {1, 2, 7 }

    Returns: 7

  114. {3, 1, 2 }

    Returns: 3

  115. {7, 5 }

    Returns: 5

  116. {1, 1, 3 }

    Returns: 3

  117. {6, 4, 4 }

    Returns: 6

  118. {5, 6 }

    Returns: 4

  119. {4, 7, 6 }

    Returns: 5

  120. {7, 4 }

    Returns: 4

  121. {3, 2, 2 }

    Returns: 3

  122. {9, 7, 9, 9 }

    Returns: 14


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: