Problem Statement
Definition
- Class:
- EllysXors
- Method:
- getXor
- Parameters:
- long, long
- Returns:
- long
- Method signature:
- long getXor(long L, long R)
- (be sure your method is public)
Notes
- XOR (exclusive or) is a binary operation, performed on two numbers in binary notation. First, the shorter number is prepended with leading zeroes until both numbers have the same number of digits (in binary). Then, the result is calculated as follows: for each bit where the numbers differ the result has 1 in its binary representation. It has 0 in all other positions.
- For example 42 XOR 7 is performed as follows. First, the numbers are converted to binary: 42 is 101010 and 7 is 111. Then the shorter number is prepended with leading zeros until both numbers have the same number of digits. This means 7 becomes 000111. Then 101010 XOR 000111 = 101101 (the result has ones only in the positions where the two numbers differ). Then the result can be converted back to decimal notation. In this case 101101 = 45, so 42 XOR 7 = 45.
- One of the ways to calculate the XOR of more than two numbers A1, A2, ..., An is "A1 XOR (A2 XOR (... XOR An))..))". Since the function is commutative and associative, you can also express it as "A1 XOR A2 XOR ... XOR An" and group the operands in any way you like.
- It can be proved that the answer is always less than 2*R for the given constraints.
Constraints
- L and R will be between 1 and 4,000,000,000, inclusive.
- L will be less than or equal to R.
Examples
3
10
Returns: 8
((((((3 XOR 4) XOR 5) XOR 6) XOR 7) XOR 8) XOR 9) XOR 10 = (((((7 XOR 5) XOR 6) XOR 7) XOR 8) XOR 9) XOR 10 = ((((2 XOR 6) XOR 7) XOR 8) XOR 9) XOR 10 = (((4 XOR 7) XOR 8) XOR 9) XOR 10 = ((3 XOR 8) XOR 9) XOR 10 = (11 XOR 9) XOR 10 = 2 XOR 10 = 8.
5
5
Returns: 5
The XOR of a single number is the number itself.
13
42
Returns: 39
A bit larger example.
666
1337
Returns: 0
The answer can be zero.
1234567
89101112
Returns: 89998783
19
113
Returns: 18
42
666
Returns: 666
42
1337
Returns: 0
123456
7891011
Returns: 0
1000001
10000001
Returns: 1000001
12345678
910111213
Returns: 0
1000000000
1000000000
Returns: 1000000000
1
2000000000
Returns: 2000000000
1
1
Returns: 1
1
2
Returns: 3
1
3
Returns: 0
1
4
Returns: 4
2
3
Returns: 1
3
4
Returns: 7
2
4
Returns: 5
4
8
Returns: 8
2
536879812
Returns: 536879813
536879912
999999999
Returns: 0
2
999999999
Returns: 1
32
32768
Returns: 32768
31
32768
Returns: 32799
31
32769
Returns: 30
32
32767
Returns: 0
131071
536870911
Returns: 131071
131071
536870912
Returns: 537001983
131071
536870913
Returns: 131070
131072
536870911
Returns: 0
131072
536870912
Returns: 536870912
131072
536870913
Returns: 1
131073
536870911
Returns: 131072
131073
536870912
Returns: 537001984
131073
536870913
Returns: 131073
1048575
1048575
Returns: 1048575
1048576
1048576
Returns: 1048576
1048577
1048577
Returns: 1048577
32768
131072
Returns: 131072
1
4000000000
Returns: 4000000000
2
4000000000
Returns: 4000000001
3
4000000000
Returns: 4000000003
4
4000000000
Returns: 4000000000
1
3500000000
Returns: 3500000000
2
3500000000
Returns: 3500000001
3
3500000000
Returns: 3500000003
4
3500000000
Returns: 3500000000
1
3200000000
Returns: 3200000000
2
3200000000
Returns: 3200000001
3
3200000000
Returns: 3200000003
4
3200000000
Returns: 3200000000
666666666
4000000000
Returns: 4000000001
424242
3333333333
Returns: 0
3450000000
3550000000
Returns: 3550000000
3499999999
3500000001
Returns: 3499999998
3199999999
3200000001
Returns: 3199999998
1500000000
3200000000
Returns: 3200000000
1424242424
3666666666
Returns: 3666666667
130263043
1177443348
Returns: 1106113559
2810981134
3499790709
Returns: 0
2527172019
3461657195
Returns: 2527172019
354992550
1606742078
Returns: 1606742078
1472309589
2224059869
Returns: 1472309589
867820671
3985937175
Returns: 867820671
1897956893
3035443472
Returns: 3318593292
283975837
933770122
Returns: 658838295
3476788076
3989990996
Returns: 3989990996
2595773870
3624559114
Returns: 3624559114
2418495253
2699053630
Returns: 818349355
42960118
1195813117
Returns: 0
842199711
1659595305
Returns: 842199710
1332287090
1496579640
Returns: 1496579641
818324723
2890422175
Returns: 818324723
687152474
1522117401
Returns: 0
566218496
1053716812
Returns: 1053716812
449420940
1946669556
Returns: 1946669556
1864309337
2771931311
Returns: 1864309336
3094639439
3984867497
Returns: 3094639438
314517004
2425746086
Returns: 2425746087
1470596795
1996872890
Returns: 547510784
218065286
2019768625
Returns: 0
1948518086
3594405127
Returns: 1
504951108
2187256312
Returns: 2187256312
2844596960
3124633025
Returns: 1
1146426417
3222714612
Returns: 2219027652
34113053
2366099053
Returns: 34113053
852398326
2876863866
Returns: 2876863866
16232468
3892549222
Returns: 3892549223
1016421603
3857091265
Returns: 1016421602
76576982
3185129678
Returns: 3185129678
1501742132
3477813612
Returns: 3477813612
730722278
2708003158
Returns: 2708003158
75611648
3307123408
Returns: 3307123408
1275177872
1591680236
Returns: 1591680236
3394542013
3526959612
Returns: 409843776
3214926694
3349611794
Returns: 3349611794
2500973784
3499081632
Returns: 3499081632
1017144259
3881433164
Returns: 3690568591
13
3452523424
Returns: 3452523436
123
4000000000
Returns: 4000000123
123
3999999996
Returns: 3999999879
1
1000000000
Returns: 1000000000
40
4000000000
Returns: 4000000000
1
3009710000
Returns: 3009710000
3
3999999997
Returns: 2
1
3999999999
Returns: 0
1
3999999998
Returns: 3999999999
8
3998899879
Returns: 0
4325
3906300000
Returns: 3906304132
1
2147483648
Returns: 2147483648
2
3000000000
Returns: 3000000001
1
3333333333
Returns: 1
2
3999999988
Returns: 3999999989
268435456
400000000
Returns: 400000000
2147483647
2147483648
Returns: 4294967295
4000000000
4000000000
Returns: 4000000000
1
3000000000
Returns: 3000000000
9
2147483647
Returns: 8
17
3654879452
Returns: 3654879436
12325
3987654236
Returns: 3987666552
2
3999999999
Returns: 1
2900000000
3989929292
Returns: 3989929292
2
3242432545
Returns: 0
3221225470
3221225472
Returns: 3221225473
3999999987
3999999999
Returns: 3999999987
5
3999999997
Returns: 5
199
3456789054
Returns: 3456789240
1234567890
2345678912
Returns: 2345678913
3000000000
4000000000
Returns: 4000000000
10000000
4000000000
Returns: 4000000000
1
999999999
Returns: 0
1
3348991222
Returns: 3348991223
1287226651
1779211297
Returns: 1287226650
3723
3999999999
Returns: 3723
3990000000
4000000000
Returns: 4000000000
1253834751
1253900287
Returns: 1253834751
5
999999999
Returns: 4
1073741234
3023435619
Returns: 1
1
400000000
Returns: 400000000
1234567891
2345678914
Returns: 3259382416
3999999999
3999999999
Returns: 3999999999
3376367013
3814610059
Returns: 3376367012
1234567
3912345678
Returns: 3911417544
3800000
4000000
Returns: 4000000
2147483648
2147483648
Returns: 2147483648
9
3999999998
Returns: 3999999991
1
11
Returns: 0
2147483648
4000000000
Returns: 4000000000
1999999999
3999999998
Returns: 2573120512
1
1999999999
Returns: 0
3999000999
3999000999
Returns: 3999000999
3123456789
3123456791
Returns: 3123456788
3900000000
3932753940
Returns: 3932753940
4
300234003
Returns: 0
2
2
Returns: 2
3999999992
4000000000
Returns: 4000000000
1531682046
2905690008
Returns: 2905690009
3994584896
4000000000
Returns: 4000000000
362124
455288
Returns: 455288
4
5
Returns: 1
2000000000
4000000000
Returns: 4000000000
19288744
1998894898
Returns: 1998894899
512
1024
Returns: 1024