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

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


เราได้รับอาร์เรย์ของตัวเลข Arr[] เป้าหมายคือการนับจำนวนแฝดที่มีผลิตภัณฑ์เท่ากับจำนวนที่กำหนด p สามารถมีแฝดสามที่มีค่าเท่ากันแต่องค์ประกอบต่างกันได้มากกว่าหนึ่งตัว ตัวอย่างเช่น (1,2,3) และ (3,1,2) ในอาร์เรย์ [1,2,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) รับอาร์เรย์ ความยาว และผลิตภัณฑ์ของอาร์เรย์เป็นอินพุต และคืนค่า triplets ที่มีผลลัพธ์เท่ากับ p

  • นำตัวแปรเริ่มต้นนับเป็น 0 สำหรับจำนวนแฝดสาม

  • ใช้ตัวแปรเริ่มต้นเป็นผลคูณของแฝดสามแต่ละตัว เริ่มแรก 1.

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

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

  • คำนวณ prod=arr[i]*arr[j]*arr[k] ถ้า prod==p ก็นับการเพิ่ม

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

  • คืนจำนวนตามผลลัพธ์ที่ต้องการ

ตัวอย่าง

#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.