Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนแฝดที่มีผลิตภัณฑ์เท่ากับจำนวนที่กำหนดใน C++


เราได้รับอาร์เรย์ Arr[] ของจำนวนเต็มที่มีความยาว n และตัวเลข M อาร์เรย์มีเฉพาะจำนวนเต็มบวกเท่านั้น เป้าหมายคือการนับแฝดสามขององค์ประกอบของ Arr[] ที่มีผลิตภัณฑ์เท่ากับ M

เราจะทำสิ่งนี้โดยใช้สามลูป จำนวนที่เพิ่มขึ้นถ้า 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 สำหรับจำนวนแฝดสาม

  • Traverse array ใช้สาม for loops สำหรับแต่ละองค์ประกอบของ triplet

  • วงนอกสุดจาก 0<=i

  • ตรวจสอบว่า arr[i]*arr[j]*arr[k]==m หรือไม่ ถ้าเป็นจริงจะนับการเพิ่มขึ้น

  • เมื่อสิ้นสุดการวนซ้ำทั้งหมดจะนับจำนวน triplets ทั้งหมดที่ตรงตามเงื่อนไข

  • คืนค่าการนับเป็นผลลัพธ์

ตัวอย่าง

#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