정수 배열이 주어지고 주어진 배열 값을 사용하여 형성할 수 있는 쌍의 총 수를 계산하여 쌍에 대한 OR 연산이 결과 값을 생성하도록 하는 것입니다. 주어진 쌍의 MAX 값보다 작습니다.
OR 연산에 대한 진리표는 다음과 같습니다.
A | B | AVB |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
입력 - 정수 arr[] ={2, 5, 1, 8, 9}
출력 − 비트 OR이 Max보다 작은 쌍의 수는 − 3
입니다.설명 -
X | Y | X V Y |
2 | 5 | 7>5=FALSE |
2 | 1 | 3>2=FALSE |
2 | 8 | 10>8=FALSE |
2 | 9 | 11>9=FALSE |
5 | 1 | 5=5 참 |
5 | 8 | 13>8=FALSE |
5 | 9 | 13>9=FALSE |
1 | 8 | 9>8=FALSE |
1 | 9 | 10>9=FALSE |
8 | 9 | 9=9=참 |
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
쌍을 형성하기 위해 정수 요소의 배열을 입력하십시오
-
배열의 크기를 계산하여 추가 처리를 위해 데이터를 함수에 전달합니다.
-
쌍 중 MAX 값보다 작거나 같은 값을 갖는 OR 연산으로 형성된 쌍을 저장할 임시 변수 개수를 만듭니다.
-
배열의 크기가 1이 될 때까지 i에서 0까지 FOR 루프 시작
-
루프 내에서 배열의 크기까지 j에서 i+1까지 FOR 또 다른 루프를 시작합니다.
-
루프 내에서 IF arr[i] | arr[j] <=max(arr[i], arr[j]) 카운트를 1씩 증가
-
개수 반환
-
결과를 인쇄하십시오.
예시
#include <bits/stdc++.h> using namespace std; //Count pairs with bitwise OR less than Max int Pair_OR(int arr[], int size){ int count = 0; for (int i = 0; i lt; size - 1; i++){ for (int j = i + 1; j lt; size; j++){ if ((arr[i] | arr[j]) lt;= max(arr[i], arr[j])){ count++; } } } return count; } int main(){ int arr[] = { 4, 8, 9, 10, 23}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs with bitwise OR less than Max are: "<<Pair_OR(arr, size); return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -
Count of pairs with bitwise OR less than Max are − 3