Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số bộ ba có tích bằng số đã cho trong C ++

Chúng ta được cho một mảng Arr [] gồm các số nguyên có độ dài n và một số M. Mảng chỉ chứa các số nguyên dương. Mục đích là đếm bộ ba phần tử của Arr [] có tích bằng M.

Chúng tôi sẽ làm điều này bằng cách sử dụng ba vòng lặp for. Số lượng tăng lên nếu arr [x] * arr [y] * arr [z] =M và x! =Y! =Z. (0 <=x, y, z

Hãy cùng hiểu với các ví dụ.

Đầu vào

arr[]= { 1,2,3,0,2,4 }, M=24

Đầu ra

Number of triplets with product M: 2

Giải thích

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

Đầu vào

arr[]= {2,2,2,2,2}, M=6

Đầu ra

Number of triplets with product M: 0

Giải thích

Every triplet has product equal to 8
Total triplets: 0

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy một mảng số nguyên Arr [] được khởi tạo với các số ngẫu nhiên.

  • Biến N lưu trữ độ dài của Arr [].

  • Hàm yitisM (int arr [], int n, int m) nhận một mảng, độ dài của nó trả về bộ ba trong đó tích bằng m.

  • Lấy biến số ban đầu là 0 cho số lượng bộ ba.

  • Traverse mảng sử dụng ba vòng lặp for cho mỗi phần tử của bộ ba.

  • Vòng ngoài cùng từ 0 <=i

  • Kiểm tra xem arr [i] * arr [j] * arr [k] ==m hay không. Nếu đúng thì số gia tăng.

  • Ở cuối tất cả các vòng đếm sẽ có tổng số bộ ba đáp ứng điều kiện.

  • Trả về kết quả là số lượng.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Number of triplets with product M: 4