计算产品等于给定数量的三胞胎的数量,并允许C ++中重复

我们给了一个数字数组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 []。

  • 取一个存储产品值的可变产品。N存储Arr []的长度。

  • 函数countTriplets(int arr [],int n,int p)将一个数组,其长度和乘积作为输入,并返回乘积等于p的三元组。

  • 将三元组的数量的初始变量计数设为0。

  • 将初始变量prod作为每个三元组的乘积。最初是1。

  • 对三元组的每个元素使用三个for循环遍历数组。

  • 最外层循环从0 <= i <n-2,内层循环i <j <n-1,最内层j <k <n。

  • 计算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.
猜你喜欢