Arr[] 숫자 배열이 제공됩니다. 목표는 곱이 주어진 숫자 p와 같은 삼중항의 수를 계산하는 것입니다. 값은 같지만 요소가 다른 둘 이상의 삼중항이 있을 수 있습니다. 예를 들어, 배열 [1,2,3,1,2]의 (1,2,3) 및 (3,1,2)는 요소는 다르지만 값이 동일한 경우 다른 것으로 계산됩니다.
예를 들어 이해합시다.
입력 - arr[]={ 1,2,3,2,4,1,5 }, p=4
출력 − 세 쌍둥이의 수:3
설명 -
Triplet 1[ 1,2,3,2,4,1,5 ] → (1,2,2) product=4 Triplet 2 [ 1,2,3,2,4,1,5 ] → (1,4,1) product=4 Triplet 3 [ 1,2,3,2,4,1,5 ] → (2,2,1) product=4 Number of triplets with product 4 is 3.
입력 - arr[]={ 1,1,2,1,2,2 }, p=8
출력 − 세 쌍의 수 − 1
설명 -
Triplet 1 [ 1,1,2,1,2,2 ] → (2,2,2) product=8 Number of triplets with product 8 is 1
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
임의의 숫자로 초기화된 정수 배열 Arr[]을 사용합니다.
-
Product 값을 저장하는 변수 product를 가져옵니다. N은 Arr[]의 길이를 저장합니다.
-
함수 countTriplets(int arr[],int n,int p)는 배열, 길이 및 곱을 입력으로 취하고 곱이 p와 같은 삼중항을 반환합니다.
-
세 쌍의 수에 대해 초기 변수 개수를 0으로 취합니다.
-
초기 변수 prod를 각 삼중항의 곱으로 취합니다. 처음에는 1.
-
트리플렛의 각 요소에 대해 세 개의 for 루프를 사용하여 배열을 탐색합니다.
-
0<=i
-
prod=arr[i]*arr[j]*arr[k]를 계산합니다. prod==p이면 카운트를 증가시킵니다.
-
모든 루프의 끝에서 카운트는 조건을 충족하는 총 트리플렛 수를 갖습니다.
-
원하는 결과로 카운트를 반환합니다.
예시
#include <bits/stdc++.h> using namespace std; int countTriplets(int arr[],int n,int p){ int count = 0; int prod=1; for (int i = 0; i < n-2; i++){ for (int j = i+1; j < n-1; j++){ for (int k = j+1; k < n; k++){ prod=arr[i]*arr[j]*arr[k]; if ( prod==p ){ count++; // cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]<<" c :"<<arr[k]; //to print } } } } } return count; } int main(){ int Arr[]={ 1,2,3,6,1,6,3,2,1}; int N=9; //length of array int product=6; cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N,product); return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -
Number of triplets : 18.