Open In App

Maximum XOR using K numbers from 1 to n

Last Updated : 15 Feb, 2023
Comments
Improve
Suggest changes
Like Article
Like
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)
 


 


Maximum XOR using K numbers from 1 to n
Article Tags :
Practice Tags :

Similar Reads