📌  相关文章
📜  最多k个元素从1到n的最大XOR值

📅  最后修改于: 2021-04-29 15:53:02             🧑  作者: Mango

给出两个正整数n和k。您必须计算从1到n的最多k个元素的最大可能XOR值。
注意: k> 1
例子 :

Input : n = 7, k = 3
Output : 7
Explanation : You can select 1, 2, 4 for maximum XOR-value

Input : n = 7, k = 2
Output : 7
Explanation : You can select 3 and 4 for maximum value.

对于k的任何值,我们可以从1到n中选择至少两个数字,并且对于所需的结果,我们必须仔细研究n的位表示形式。因此,让我们通过一个例子来理解它。假设n = 6且k = 2:
6 = 110的位表示
5的位表示= 101
位表示形式4 = 100
3 = 011的位表示
2 = 010的位表示
1 = 001的位表示
现在,您可以看到,在选择了所需的数目并选择了任意一个之后,您将无法获得大于111即7的XOR值。因此,对于给定的n和k> 1,最大可能的XOR值为2 log2(n )+1 -1 (n的所有位都变为1时的值)。

C++
// Program to obtain maximum XOR value sub-array
#include 
using namespace std;
 
// function to calculate maximum XOR value
int maxXOR(int n, int k) {
  int c = log2(n) + 1;
 
  // Return (2^c - 1)
  return ((1 << c) - 1);
}
 
// driver program
int main() {
  int n = 12;
  int k = 3;
  cout << maxXOR(n, k);
  return 0;
}


Java
// Program to obtain maximum
// XOR value sub-array
import java.lang.*;
 
class GFG
{
// function to calculate
// maximum XOR value
static int maxXOR(int n, int k)
{
int c = (int) (Math.log(n) /
               Math.log(2)) + 1;
 
// Return (2^c - 1)
return ((1 << c) - 1);
}
 
// Driver Code
public static void main(String[] args)
{
int n = 12;
int k = 3;
System.out.println(maxXOR(n, k));
}
}
 
// This code is contributed by Smitha


Python3
# Python3 program to obtain maximum
# XOR value sub-array
import math
 
# Function to calculate maximum XOR value
def maxXOR(n, k):
    c = int(math.log(n, 2)) + 1
 
    # Return (2^c - 1)
    return ((1 << c) - 1)
 
# Driver Code
n = 12; k = 3
print (maxXOR(n, k))
 
# This code is contributed by shreyanshi_arun.


C#
// Program to obtain maximum
// XOR value sub-array
using System;
 
class GFG
{
// function to calculate
// maximum XOR value
static int maxXOR(int n, int k)
{
int c = (int) (Math.Log(n) /
               Math.Log(2)) + 1;
 
// Return (2^c - 1)
return ((1 << c) - 1);
}
 
// Driver Code
public static void Main(String[] args)
{
int n = 12;
int k = 3;
Console.Write(maxXOR(n, k)) ;
}
}
 
// This code is contributed by Smitha


PHP


Javascript


输出:
15