# Maximum XOR using K numbers from 1 to n

• Difficulty Level : Medium
• Last Updated : 15 Feb, 2022

Given an 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 an 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 ``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

 ``

## Javascript

 ``

Output :

`7`

My Personal Notes arrow_drop_up