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

Đếm số bộ ba với tích bằng số đã cho với các bản sao được phép trong C ++


Chúng ta được cung cấp với một mảng số Arr []. Mục đích là để đếm số bộ ba có tích bằng số p đã cho. Có thể có nhiều hơn một bộ ba có cùng giá trị nhưng khác phần tử. Ví dụ:(1,2,3) và (3,1,2) trong mảng [1,2,3,1,2] sẽ được tính là khác nhau nếu các phần tử khác nhau nhưng giá trị giống nhau.

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

Đầu vào - arr [] ={1,2,3,2,4,1,5}, p =4

Đầu ra - Số lượng sinh ba:3

Giải thích -

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.

Đầu vào - arr [] ={1,1,2,1,2,2}, p =8

Đầu ra - Số sinh ba - 1

Giải thích -

Triplet 1 [ 1,1,2,1,2,2 ] → (2,2,2) product=8
Number of triplets with product 8 is 1

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.

  • Lấy một sản phẩm biến đổi lưu trữ giá trị Sản phẩm. N lưu trữ độ dài của Arr [].

  • Hàm countTriplets (int arr [], int n, int p) nhận một mảng, độ dài và tích của nó làm đầu vào và trả về các bộ ba có tích bằng p.

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

  • Lấy tiền biến ban đầu là tích của mỗi bộ ba. Ban đầu là 1.

  • 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

  • Tính prod =arr [i] * arr [j] * arr [k]. Nếu prod ==p 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ả lại số lượng như kết quả mong muốn.

Ví dụ

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

Đầ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 : 18.