C++中查詢乘積等於給定數字的三元組數量


給定一個長度為n的整數陣列Arr[]和一個數字M。陣列僅包含正整數。目標是計算Arr[]中乘積等於M的三元組元素的數量。

我們將使用三個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的三元組。

  • 將初始變數count設定為0,表示三元組的數量。

  • 使用三個for迴圈遍歷陣列,以獲取三元組的每個元素。

  • 最外層迴圈從0<=i<n-2開始,內層迴圈i<j<n-1,最內層迴圈j<k<n。

  • 檢查arr[i]*arr[j]*arr[k]==m。如果為真,則遞增count。

  • 在所有迴圈結束後,count將包含滿足條件的三元組總數。

  • 返回count作為結果。

示例

 現場演示

#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

更新於: 2020-10-31

158 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.