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