给定大小为N的数组A []。任务是查找存在多少对(i,j),以使A [i]或A [j]为奇数。
例子:
Input : N = 4
A[] = { 5, 6, 2, 8 }
Output : 3
Explanation :
Since pair of A[] = ( 5, 6 ), ( 5, 2 ), ( 5, 8 ),
( 6, 2 ), ( 6, 8 ), ( 2, 8 )
5 OR 6 = 7, 5 OR 2 = 7, 5 OR 8 = 13
6 OR 2 = 6, 6 OR 8 = 14, 2 OR 8 = 10
Total pair A( i, j ) = 6 and Odd = 3
Input : N = 7
A[] = {8, 6, 2, 7, 3, 4, 9}
Output :15
一个简单的解决方案是检查每一对,并找到按位或,并用按位或将所有此类对计数为奇数。
下面是上述方法的实现:
C++
// C++ program to count pairs with odd OR
#include
using namespace std;
// Function to count pairs with odd OR
int findOddPair(int A[], int N)
{
int oddPair = 0;
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) {
// find OR operation
// check odd or odd
if ((A[i] | A[j]) % 2 != 0)
oddPair++;
}
}
// return count of odd pair
return oddPair;
}
// Driver Code
int main()
{
int A[] = { 5, 6, 2, 8 };
int N = sizeof(A) / sizeof(A[0]);
cout << findOddPair(A, N) << endl;
return 0;
}
Java
// Java program to count pairs
// with odd OR
class GFG
{
// Function to count pairs with odd OR
static int findOddPair(int A[], int N)
{
int oddPair = 0;
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
// find OR operation
// check odd or odd
if ((A[i] | A[j]) % 2 != 0)
oddPair++;
}
}
// return count of odd pair
return oddPair;
}
// Driver Code
public static void main(String []args)
{
int A[] = { 5, 6, 2, 8 };
int N = A.length;
System.out.println(findOddPair(A, N));
}
}
// This code is contributed by ANKITRAI1
Python3
# Python3 program to count pairs with odd OR
# Function to count pairs with odd OR
def findOddPair(A, N):
oddPair = 0
for i in range(0, N):
for j in range(i+1, N):
# find OR operation
# check odd or odd
if ((A[i] | A[j]) % 2 != 0):
oddPair+=1
# return count of odd pair
return oddPair
# Driver Code
def main():
A = [ 5, 6, 2, 8 ]
N = len(A)
print(findOddPair(A, N))
if __name__ == '__main__':
main()
# This code is contributed by PrinciRaj1992
C#
// C# program to count pairs
// with odd OR
using System;
public class GFG{
// Function to count pairs with odd OR
static int findOddPair(int[] A, int N)
{
int oddPair = 0;
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
// find OR operation
// check odd or odd
if ((A[i] | A[j]) % 2 != 0)
oddPair++;
}
}
// return count of odd pair
return oddPair;
}
// Driver Code
static public void Main (){
int []A = { 5, 6, 2, 8 };
int N = A.Length;
Console.WriteLine(findOddPair(A, N));
}
}
//This code is contributed by ajit
PHP
Javascript
C++
// C++ program to count pairs with odd OR
#include
using namespace std;
// Function to count pairs with odd OR
int countOddPair(int A[], int N)
{
// Count total even numbers in
// array
int count = 0;
for (int i = 0; i < N; i++)
if (!(A[i] & 1))
count++;
// Even pair count
int evenPairCount = count * (count - 1) / 2;
// Total pairs
int totPairs = N * (N - 1) / 2;
// Return Odd pair count
return totPairs - evenPairCount;
}
// Driver main
int main()
{
int A[] = { 5, 6, 2, 8 };
int N = sizeof(A) / sizeof(A[0]);
cout << countOddPair(A, N) << endl;
return 0;
}
Java
// Java program to count pairs with odd OR
public class GFG {
// Function to count pairs with odd OR
static int countOddPair(int A[], int N) {
// Count total even numbers in
// array
int count = 0;
for (int i = 0; i < N; i++) {
if ((A[i] % 2 != 1)) {
count++;
}
}
// Even pair count
int evenPairCount = count * (count - 1) / 2;
// Total pairs
int totPairs = N * (N - 1) / 2;
// Return Odd pair count
return totPairs - evenPairCount;
}
// Driver main
public static void main(String[] args) {
int A[] = {5, 6, 2, 8};
int N = A.length;
System.out.println(countOddPair(A, N));
}
}
Python3
# Python 3program to count pairs with odd OR
# Function to count pairs with odd OR
def countOddPair(A, N):
# Count total even numbers in
# array
count = 0
for i in range(0, N):
if (A[i] % 2 != 1):
count+=1
# Even pair count
evenPairCount = count * (count - 1) / 2
# Total pairs
totPairs = N * (N - 1) / 2
# Return Odd pair count
return (int)(totPairs - evenPairCount)
# Driver Code
A = [ 5, 6, 2, 8 ]
N = len(A)
print(countOddPair(A, N))
# This code is contributed by PrinciRaj1992
C#
// C# program to count pairs with odd OR
using System;
public class GFG {
// Function to count pairs with odd OR
static int countOddPair(int []A, int N) {
// Count total even numbers in
// array
int count = 0;
for (int i = 0; i < N; i++) {
if ((A[i] % 2 != 1)) {
count++;
}
}
// Even pair count
int evenPairCount = count * (count - 1) / 2;
// Total pairs
int totPairs = N * (N - 1) / 2;
// Return Odd pair count
return totPairs - evenPairCount;
}
// Driver main
public static void Main() {
int []A = {5, 6, 2, 8};
int N = A.Length;
Console.WriteLine(countOddPair(A, N));
}
}
/*This code is contributed by PrinciRaj1992*/
PHP
输出:
3
时间复杂度:O(N 2 )
一个有效的解决方案是对偶数OR的对进行计数,并用对总数减去它们,以得到奇数的逐位OR的对。为此,对最后一位为0的数字进行计数。然后,偶数按位或的对数= count *(count – 1)/ 2 ,对的总数为N *(N-1)/ 2。
因此,与ODD按位或的对将为:
Total Pairs - Pairs with EVEN Bitwise-OR
下面是上述方法的实现:
C++
// C++ program to count pairs with odd OR
#include
using namespace std;
// Function to count pairs with odd OR
int countOddPair(int A[], int N)
{
// Count total even numbers in
// array
int count = 0;
for (int i = 0; i < N; i++)
if (!(A[i] & 1))
count++;
// Even pair count
int evenPairCount = count * (count - 1) / 2;
// Total pairs
int totPairs = N * (N - 1) / 2;
// Return Odd pair count
return totPairs - evenPairCount;
}
// Driver main
int main()
{
int A[] = { 5, 6, 2, 8 };
int N = sizeof(A) / sizeof(A[0]);
cout << countOddPair(A, N) << endl;
return 0;
}
Java
// Java program to count pairs with odd OR
public class GFG {
// Function to count pairs with odd OR
static int countOddPair(int A[], int N) {
// Count total even numbers in
// array
int count = 0;
for (int i = 0; i < N; i++) {
if ((A[i] % 2 != 1)) {
count++;
}
}
// Even pair count
int evenPairCount = count * (count - 1) / 2;
// Total pairs
int totPairs = N * (N - 1) / 2;
// Return Odd pair count
return totPairs - evenPairCount;
}
// Driver main
public static void main(String[] args) {
int A[] = {5, 6, 2, 8};
int N = A.length;
System.out.println(countOddPair(A, N));
}
}
Python3
# Python 3program to count pairs with odd OR
# Function to count pairs with odd OR
def countOddPair(A, N):
# Count total even numbers in
# array
count = 0
for i in range(0, N):
if (A[i] % 2 != 1):
count+=1
# Even pair count
evenPairCount = count * (count - 1) / 2
# Total pairs
totPairs = N * (N - 1) / 2
# Return Odd pair count
return (int)(totPairs - evenPairCount)
# Driver Code
A = [ 5, 6, 2, 8 ]
N = len(A)
print(countOddPair(A, N))
# This code is contributed by PrinciRaj1992
C#
// C# program to count pairs with odd OR
using System;
public class GFG {
// Function to count pairs with odd OR
static int countOddPair(int []A, int N) {
// Count total even numbers in
// array
int count = 0;
for (int i = 0; i < N; i++) {
if ((A[i] % 2 != 1)) {
count++;
}
}
// Even pair count
int evenPairCount = count * (count - 1) / 2;
// Total pairs
int totPairs = N * (N - 1) / 2;
// Return Odd pair count
return totPairs - evenPairCount;
}
// Driver main
public static void Main() {
int []A = {5, 6, 2, 8};
int N = A.Length;
Console.WriteLine(countOddPair(A, N));
}
}
/*This code is contributed by PrinciRaj1992*/
的PHP
输出:
3
时间复杂度:O(N)