计算产品等于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 <n-2,内层循环i <j <n-1,最内层j <k <n。

  • 检查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