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

C++에서 주어진 수와 동일한 곱을 가진 삼중항의 수를 센다.

<시간/>

길이가 n이고 숫자가 M인 정수 배열 Arr[]이 제공됩니다. 배열에는 양의 정수만 포함됩니다. 목표는 곱이 M과 같은 Arr[] 요소의 삼중항을 계산하는 것입니다.

세 개의 for 루프를 사용하여 이를 수행할 것입니다. arr[x]*arr[y]*arr[z]=M이고 x!=y!=z인 경우 카운트를 증가시킵니다. (0<=x,y,z

예를 들어 이해합시다.

입력

arr[]= { 1,2,3,0,2,4 }, M=24

출력

Number of triplets with product M: 2

설명

Triplets with arr[x]*arr[y]*arr[z]==M.
Arr{}=[ 1,2,3,0,2,4 ] =(2,3,4) → 2*3*4=24
Arr{}=[ 1,2,3,0,2,4 ] =(3,2,4) → 3*2*4=24
Total triplets: 2

입력

arr[]= {2,2,2,2,2}, M=6

출력

Number of triplets with product M: 0

설명

Every triplet has product equal to 8
Total triplets: 0

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

  • 임의의 숫자로 초기화된 정수 배열 Arr[]을 사용합니다.

  • 변수 N은 Arr[]의 길이를 저장합니다.

  • 함수 productisM(int arr[],int n,int m)은 배열을 취하고 길이는 곱이 m과 같은 삼중항을 반환합니다.

  • 세 쌍의 수에 대해 초기 변수 개수를 0으로 취합니다.

  • 트리플렛의 각 요소에 대해 세 개의 for 루프를 사용하여 배열을 탐색합니다.

  • 0<=i

  • arr[i]*arr[j]*arr[k]==m 인지 확인하십시오. true이면 카운트를 증가시킵니다.

  • 모든 루프의 끝에서 카운트는 조건을 충족하는 총 트리플렛 수를 갖습니다.

  • 카운트를 결과로 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int productisM(int arr[], int n, int m){
   int count = 0;
   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++){
            int prod=arr[i]*arr[j]*arr[k];
            if(prod==m)
               { count++; }
         }
      }
   }
   return count;
}
int main(){
   int Arr[]={ 1,2,3,0,2,4 };
   int N=6; //length of array
   int M=24;
   cout <<endl<< "Number of triplets with product M : "<<productisM(Arr,N,M);
   return 0;
}

출력

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

Number of triplets with product M: 4