给定数字N ,任务是找到从1到N的所有偶数的按位OR(|)。
例子:
Input: 2
Output: 2
Input: 10
Output: 14
Explanation: 2 | 4 | 6 | 8 | 10 = 14
天真的方法:将结果初始化为2。从4到n(对于所有偶数)迭代循环,并通过按位或(|)查找结果来更新结果。
下面是该方法的实现:
C++
// C++ implementation of the above approach
#include
using namespace std;
// Function to return the bitwise OR
// of all the even numbers upto N
int bitwiseOrTillN(int n)
{
// Initialize result as 2
int result = 2;
for (int i = 4; i <= n; i = i + 2) {
result = result | i;
}
return result;
}
// Driver code
int main()
{
int n = 10;
cout << bitwiseOrTillN(n);
return 0;
}
Java
// Java implementation of the above approach
class GFG
{
// Function to return the bitwise OR
// of all the even numbers upto N
static int bitwiseOrTillN(int n)
{
// Initialize result as 2
int result = 2;
for (int i = 4; i <= n; i = i + 2)
{
result = result | i;
}
return result;
}
// Driver code
static public void main (String args[])
{
int n = 10;
System.out.println(bitwiseOrTillN(n));
}
}
// This code is contributed by AnkitRai01
Python3
# Python 3 implementation of the above approach
# Function to return the bitwise OR
# of all the even numbers upto N
def bitwiseOrTillN ( n ):
# Initialize result as 2
result = 2;
for i in range(4, n + 1, 2) :
result = result | i
return result
# Driver code
n = 10;
print(bitwiseOrTillN(n));
# This code is contributed by ANKITKUMAR34
C#
// C# implementation of the above approach
using System;
class GFG
{
// Function to return the bitwise OR
// of all the even numbers upto N
static int bitwiseOrTillN(int n)
{
// Initialize result as 2
int result = 2;
for (int i = 4; i <= n; i = i + 2)
{
result = result | i;
}
return result;
}
// Driver code
static public void Main ()
{
int n = 10;
Console.WriteLine(bitwiseOrTillN(n));
}
}
// This code is contributed by AnkitRai01
C++
// C++ implementation of the above approach
#include
#include
using namespace std;
// Function to return the bitwise OR
// of all even numbers upto N
int bitwiseOrTillN(int n)
{
// For value less than 2
if (n < 2)
return 0;
// Count total number of bits in bitwise or
// all bits will be set except last bit
int bitCount = log2(n) + 1;
// Compute 2 to the power bitCount and subtract 2
return pow(2, bitCount) - 2;
}
// Driver code
int main()
{
int n = 10;
cout << bitwiseOrTillN(n);
return 0;
}
Java
// Java implementation of the above approach
class GFG
{
// Function to return the bitwise OR
// of all even numbers upto N
static int bitwiseOrTillN(int n)
{
// For value less than 2
if (n < 2)
return 0;
// Count total number of bits in bitwise or
// all bits will be set except last bit
int bitCount = (int)(Math.log(n)/Math.log(2)) + 1;
// Compute 2 to the power bitCount and subtract 2
return (int)Math.pow(2, bitCount) - 2;
}
// Driver code
public static void main (String[] args)
{
int n = 10;
System.out.println(bitwiseOrTillN(n));
}
}
// This code is contributed by AnkitRai01
Python3
# Python3 implementation of the above approach
from math import log2
# Function to return the bitwise OR
# of all even numbers upto N
def bitwiseOrTillN(n) :
# For value less than 2
if (n < 2) :
return 0;
# Count total number of bits in bitwise or
# all bits will be set except last bit
bitCount = int(log2(n)) + 1;
# Compute 2 to the power bitCount and subtract 2
return pow(2, bitCount) - 2;
# Driver code
if __name__ == "__main__" :
n = 10;
print(bitwiseOrTillN(n));
# This code is contributed by AnkitRai01
C#
// C# implementation of the above approach
using System;
class GFG
{
// Function to return the bitwise OR
// of all even numbers upto N
static int bitwiseOrTillN(int n)
{
// For value less than 2
if (n < 2)
return 0;
// Count total number of bits in bitwise or
// all bits will be set except last bit
int bitCount = (int)(Math.Log(n)/Math.Log(2)) + 1;
// Compute 2 to the power bitCount and subtract 2
return (int)Math.Pow(2, bitCount) - 2;
}
// Driver code
public static void Main()
{
int n = 10;
Console.WriteLine(bitwiseOrTillN(n));
}
}
// This code is contributed by AnkitRai01
输出:
14
高效方法:计算N中的位数。在按位或运算中,最右边的位将为0,其他所有位将为1。因此,返回pow(2,总位数)-2。它将按位或的十进制形式给出等效值。
下面是该方法的实现:
C++
// C++ implementation of the above approach
#include
#include
using namespace std;
// Function to return the bitwise OR
// of all even numbers upto N
int bitwiseOrTillN(int n)
{
// For value less than 2
if (n < 2)
return 0;
// Count total number of bits in bitwise or
// all bits will be set except last bit
int bitCount = log2(n) + 1;
// Compute 2 to the power bitCount and subtract 2
return pow(2, bitCount) - 2;
}
// Driver code
int main()
{
int n = 10;
cout << bitwiseOrTillN(n);
return 0;
}
Java
// Java implementation of the above approach
class GFG
{
// Function to return the bitwise OR
// of all even numbers upto N
static int bitwiseOrTillN(int n)
{
// For value less than 2
if (n < 2)
return 0;
// Count total number of bits in bitwise or
// all bits will be set except last bit
int bitCount = (int)(Math.log(n)/Math.log(2)) + 1;
// Compute 2 to the power bitCount and subtract 2
return (int)Math.pow(2, bitCount) - 2;
}
// Driver code
public static void main (String[] args)
{
int n = 10;
System.out.println(bitwiseOrTillN(n));
}
}
// This code is contributed by AnkitRai01
Python3
# Python3 implementation of the above approach
from math import log2
# Function to return the bitwise OR
# of all even numbers upto N
def bitwiseOrTillN(n) :
# For value less than 2
if (n < 2) :
return 0;
# Count total number of bits in bitwise or
# all bits will be set except last bit
bitCount = int(log2(n)) + 1;
# Compute 2 to the power bitCount and subtract 2
return pow(2, bitCount) - 2;
# Driver code
if __name__ == "__main__" :
n = 10;
print(bitwiseOrTillN(n));
# This code is contributed by AnkitRai01
C#
// C# implementation of the above approach
using System;
class GFG
{
// Function to return the bitwise OR
// of all even numbers upto N
static int bitwiseOrTillN(int n)
{
// For value less than 2
if (n < 2)
return 0;
// Count total number of bits in bitwise or
// all bits will be set except last bit
int bitCount = (int)(Math.Log(n)/Math.Log(2)) + 1;
// Compute 2 to the power bitCount and subtract 2
return (int)Math.Pow(2, bitCount) - 2;
}
// Driver code
public static void Main()
{
int n = 10;
Console.WriteLine(bitwiseOrTillN(n));
}
}
// This code is contributed by AnkitRai01
输出:
14