Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 arr[i] * arr[j]> arr[i] + arr[j]가 되도록 쌍(i, j)의 수를 계산합니다.


n개의 양수 배열이 제공됩니다. 목표는 arr[i]*arr[j]> arr[i]가 되도록 순서쌍(i,j)을 계산하는 것입니다. +arr[j] 및 0<=i

각 쌍 수에 대해 두 개의 for 루프를 사용하여 배열을 탐색합니다. 이제 arr[i]와 arr[j]의 합과 곱을 계산합니다. 제품이 합계 증가 개수보다 큰 경우.

예를 들어 이해합시다.

입력 − Arr[]={ 1,1,2,3 } N=4

출력 − 쌍의 수 − 1

설명 − 유효한 쌍만 − (2,3)

2*3=6 > 2+3=5

입력 - Arr[]={ 2,2,2 } N=3

출력 − 쌍의 수 − 0

설명 − 2*2와 2+2는 모두 4입니다. 곱>합

인 쌍 없음

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 양수로 초기화된 정수 배열 arr[]을 사용합니다.

  • Arr[]의 길이를 저장하는 변수 n을 사용합니다.

  • countPairs(int arr[], int n) 함수는 배열의 길이를 입력으로 사용하고 product>sum이 있는 쌍의 개수를 인쇄합니다.

  • 쌍의 각 요소에 대해 두 개의 for 루프를 사용하여 배열을 탐색합니다.

  • 0<=i

  • arr[i]*arr[j]>arr[i]+arr[j]인지 확인합니다. true인 경우 카운트를 증가시킵니다.

  • 모든 루프의 끝에서 count에는 product> sum

    이 있는 총 쌍 수가 있습니다.
  • 결과로 카운트를 반환합니다.

예시

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int countPairs(int arr[], int n){
   int count=0;
   int sum=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[i]*arr[j]>arr[i]+arr[j]) //condition
            { count++; }
      }
   }
   return count;
}
int main(){
   int arr[] = { 1,2,3,2 };
   int len = sizeof(arr) / sizeof(int);
   cout<<"Count of number of pairs :"<<countPairs(arr, len);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of number of pairs :2