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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP