Open In App

Maximum XOR using K numbers from 1 to n

Last Updated : 15 Feb, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given a positive integer n and k. Find maximum xor of 1 to n using at most k numbers. Xor sum of 1 to n is defined as 1 ^ 2 ^ 3 ^ … ^ n.
Examples : 

Input :  n = 4, k = 3
Output : 7
Explanation
Maximum possible xor sum is 1 ^ 2 ^ 4 = 7.

Input : n = 11, k = 1
Output : 11
Explanation
Maximum Possible xor sum is 11.

If we have k = 1 then the maximum possible xor sum is ‘n’ itself. Now for k > 1, we can always have a number with its all bits set till the most significant set bit in ‘n’.

C++




// CPP program to find max xor sum
// of 1 to n using atmost k numbers
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
 
// To return max xor sum of 1 to n
// using at most k numbers
ll maxXorSum(ll n, ll k)
{
    // If k is 1 then maximum
    // possible sum is n
    if (k == 1)
        return n;
 
    // Finding number greater than
    // or equal to n with most significant
    // bit same as n. For example, if n is
    // 4, result is 7. If n is 5 or 6, result
    // is 7
    ll res = 1;
    while (res <= n)
        res <<= 1;
 
    // Return res - 1 which denotes
    // a number with all bits set to 1
    return res - 1;
}
 
// Driver program
int main()
{
    ll n = 4, k = 3;
    cout << maxXorSum(n, k);
    return 0;
}


Java




// Java program to find max xor sum
// of 1 to n using atmost k numbers
public class Main {
 
    // To return max xor sum of 1 to n
    // using at most k numbers
    static int maxXorSum(int n, int k)
    {
        // If k is 1 then maximum
        // possible sum is n
        if (k == 1)
            return n;
 
        // Finding number greater than
        // or equal to n with most significant
        // bit same as n. For example, if n is
        // 4, result is 7. If n is 5 or 6, result
        // is 7
        int res = 1;
        while (res <= n)
            res <<= 1;
 
        // Return res - 1 which denotes
        // a number with all bits set to 1
        return res - 1;
    }
 
    // Driver program to test maxXorSum()
    public static void main(String[] args)
    {
        int n = 4, k = 3;
        System.out.print(maxXorSum(n, k));
    }
}


Python




# Python3 code to find max xor sum
# of 1 to n using atmost k numbers
 
# To return max xor sum of 1 to n
# using at most k numbers
def maxXorSum( n , k ):
    # If k is 1 then maximum
    # possible sum is n
    if k == 1:
        return n
     
    # Finding number greater than
    # or equal to n with most significant
    # bit same as n. For example, if n is
    # 4, result is 7. If n is 5 or 6, result
    # is 7
    res = 1
    while res <= n:
        res <<= 1
     
    # Return res - 1 which denotes
    # a number with all bits set to 1
    return res - 1
 
# Driver code
n = 4
k = 3
print( maxXorSum(n, k) )
 
# This code is contributed by Abhishek Sharma44.


C#




// C# program to find max xor sum
// of 1 to n using atmost k numbers
using System;
 
public class main {
 
    // To return max xor sum of 1 to n
    // using at most k numbers
    static int maxXorSum(int n, int k)
    {
        // If k is 1 then maximum
        // possible sum is n
        if (k == 1)
            return n;
 
        // Finding number greater than
        // or equal to n with most significant
        // bit same as n. For example, if n is
        // 4, result is 7. If n is 5 or 6, result
        // is 7
        int res = 1;
        while (res <= n)
            res <<= 1;
 
        // Return res - 1 which denotes
        // a number with all bits set to 1
        return res - 1;
    }
 
    // Driver program
    public static void Main()
    {
        int n = 4, k = 3;
        Console.WriteLine(maxXorSum(n, k));
    }
}
 
// This code is contributed by vt_m.


PHP




<?php
// PHP program to find max xor sum
// of 1 to n using atmost k numbers
 
// To return max xor sum of 1 to n
// using at most k numbers
function maxXorSum($n, $k)
{
    // If k is 1 then maximum
    // possible sum is n
    if ($k == 1)
        return $n;
 
    // Finding number greater than
    // or equal to n with most
    // significant bit same as n.
    // For example, if n is 4, result
    // is 7. If n is 5 or 6, result is 7
    $res = 1;
    while ($res <= $n)
        $res <<= 1;
 
    // Return res - 1 which denotes
    // a number with all bits set to 1
    return $res - 1;
}
 
// Driver code
$n = 4;
$k = 3;
echo maxXorSum($n, $k);
 
// This code is contributed by Mithun Kumar
?>


Javascript




<script>
 
// JavaScript program to find max xor sum
// of 1 to n using atmost k numbers
 
    // To return max xor sum of 1 to n
    // using at most k numbers
    function maxXorSum(n, k)
    {
        // If k is 1 then maximum
        // possible sum is n
        if (k == 1)
            return n;
   
        // Finding number greater than
        // or equal to n with most significant
        // bit same as n. For example, if n is
        // 4, result is 7. If n is 5 or 6, result
        // is 7
        let res = 1;
        while (res <= n)
            res <<= 1;
   
        // Return res - 1 which denotes
        // a number with all bits set to 1
        return res - 1;
    }
       
 
// Driver code
         
        let n = 4, k = 3;
        document.write(maxXorSum(n, k));
 
</script>


Output

7

Time Complexity : O(logn)
Auxiliary Space : O(1)
 

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads