আমাদের Arr[] নম্বরের একটি অ্যারে দেওয়া হয়েছে। লক্ষ্য হল ট্রিপলেটের সংখ্যা গণনা করা যার গুণফল সম্ভাব্য সব ট্রিপলেটের ক্ষুদ্রতম গুণফলের সমান। (i
আমরা প্রথমে ক্ষুদ্রতম পণ্যটি খুঁজে বের করে এটি করব যেখানে (i
উদাহরণ দিয়ে বোঝা যাক।
ইনপুট − arr[]={ 1,2,3,2,4,1,5 }
আউটপুট − ট্রিপলেটের সংখ্যা − 2
ব্যাখ্যা −
ইনপুট − arr[]={ 1,1,2,1,2,2 }
আউটপুট − ট্রিপলেটের সংখ্যা − 1
ব্যাখ্যা −
আমরা একটি পূর্ণসংখ্যার অ্যারে নিই Arr[] এলোমেলো সংখ্যার সাথে শুরু।
একটি পরিবর্তনশীল N নিন যা Arr[] এর দৈর্ঘ্য সংরক্ষণ করে।
ফাংশন countTriplets(int arr[], int n) একটি অ্যারে নেয়, এর দৈর্ঘ্য ইনপুট হিসাবে এবং ট্রিপলেট ফেরত দেয় যার গুণফল সর্বনিম্ন পণ্যের সমান।
ট্রিপলেটের সংখ্যার জন্য প্রাথমিক পরিবর্তনশীল গণনাকে 0 হিসাবে নিন।
প্রতিটি ট্রিপলেটের গুণফল হিসাবে প্রারম্ভিক চলক prod নিন। প্রাথমিকভাবে 1.
সমস্ত ট্রিপলেটের ন্যূনতম সম্ভাব্য পণ্য হিসাবে প্রাথমিক পরিবর্তনশীল মিনপ্রড নিন। প্রাথমিকভাবে 999.
ট্রিপলেটের প্রতিটি উপাদানের জন্য তিনটি লুপ ব্যবহার করে ট্রাভার্স অ্যারে।
0<=i
prod=arr[i]*arr[j]*arr[k] গণনা করুন। যদি prod<=minprod তাহলে প্রোড দিয়ে minprod আপডেট করুন।
এখন minprod সব ট্রিপলেটের সর্বনিম্ন গুণফলের মান আছে।
ট্রিপলেটের প্রতিটি উপাদানের জন্য লুপের জন্য তিনটি ব্যবহার করে আবার ট্রাভার্স অ্যারে।
0<=i
prod=arr[i]*arr[j]*arr[k] গণনা করুন। যদি prod==minprod তাহলে ইনক্রিমেন্ট কাউন্ট। যেহেতু এই জুটির সর্বনিম্ন পণ্য রয়েছে৷
সমস্ত লুপ গণনার শেষে শর্ত পূরণকারী মোট ট্রিপলেট সংখ্যা থাকবে।
ফলাফল হিসাবে গণনা ফেরত দিন।
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −Here minimum product is 2
Triplet 1[ 1,2,3,2,4,1,5 ] → (1,2,1) product=2
Triplet 2 [ 1,2,3,2,4,1,5 ] → (1,2,1) product=2
Number of triplets with product 2 which is minimum is 2.
Here minimum product is 1
Triplet 1 [ 1,1,2,1,2,2 ] → (1,1,1) product=1
Number of triplets with product 1 which is minimum is 1.
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int countTriplets(int arr[],int n){
int count = 0;
int prod=1;
int minprod=9999; //making minimum as larger than any product in array
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<=minprod )
{ minprod=prod; }
}
}
}
// cout<<"minproduct :"<<minprod; //to print minimum product
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==minprod ){
count++;
//cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]<<" c :"<<arr[k]; //to print
}
}
}
}
return count;
}
int main(){
int Arr[]={ 1,2,3,1,2,6};
int N=5; //length of array
cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N);
return 0;
}
আউটপুট
Number of triplets : 2