কম্পিউটার

C++ ব্যবহার করে একটি সমীকরণকে সন্তুষ্ট করে এমন Sextuplets সংখ্যা খুঁজুন


এই নিবন্ধে, আমরা একটি সমীকরণকে সন্তুষ্ট করে এমন বেশ কয়েকটি সেক্সটুপ্লেট খুঁজে বের করার একটি পদ্ধতির বর্ণনা করব। সুতরাং আমরা একটি উদাহরণ হিসাবে একটি সমীকরণ নিচ্ছি যেখানে আমাদের a, b, c, d, e, এবং f এর মানগুলি খুঁজে বের করতে হবে যা নীচের সমীকরণটিকে সন্তুষ্ট করে৷

( a + b + c ) * e / d = f

আসুন সমীকরণটি −

পুনরায় সাজাই
( a + b + c ) = ( f * d ) / e

এখানে প্রদত্ত সমস্যার জন্য একটি সহজ উদাহরণ -

Input : arr [ ] = { 1, 3 }
Output : 4
Explanation : ( a, b, c, e, f ) = 1, d = 3
   ( a, b, c, d, e ) = 1, f = 3
   ( a, b, c ) = 1, ( d, e, f ) = 3
   ( a, b, c, d, f ) = 3, ( e ) = 1

Input : arr [ ] = { 2, 5 }
Output : 3

সমাধান খোঁজার পদ্ধতি

প্রদত্ত সমস্যার সমাধান খুঁজতে আমরা একটি নিষ্পাপ পদ্ধতি ব্যবহার করব।

নিষ্পাপ দৃষ্টিভঙ্গি

এই সমস্যায়, এলএইচএস এবং আরএইচএসের দিকে তাকালে, আমরা এলএইচএসের সম্ভাব্য সমস্ত ফলাফল খুঁজে পেতে পারি এবং একটি অ্যারেতে সংরক্ষণ করতে পারি, একইভাবে আরএইচএসের জন্য একটি অ্যারে তৈরি করা এবং এটিকে আরএইচএসের সম্ভাব্য সমস্ত ফলাফল দিয়ে পূরণ করা।

একই মানের জন্য উভয় অ্যারে পরীক্ষা করা এবং পাওয়া প্রতিটি মানের জন্য গণনা বৃদ্ধি করা এবং অবশেষে ফলাফল দেখানো।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
int findsamenumbers(int *arr1, int *arr2, int n){
    int i = 0, j = 0, k = 0, count=0;
    while(( i < n*n*n+1) && (j < n*n*n+1)){
        if(arr1[i] < arr2[j])
            i++;
        else if(arr1[i] == arr2[j]){
            count++;
        int temp = arr1[i];
        while(temp==arr1[++i]){
            count++;
        }
        while(temp==arr2[++j]){
            count++;
        }
    }
    else
        j++;
    }  
    return count;
}
int main(){
    int arr[] = {2,5};
    int n = sizeof(arr)/sizeof(arr[0]);
    // Generating all possible values of LHS array
    int index = 0,i;
    int LHS[n*n*n ];
    for ( i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            for(int k = 0; k < n; k++){
                LHS[index++] = (arr[i] * arr[j]) / arr[k];
            }
        }
    }
    // Generating all possible value of RHS array
    int RHS[n*n*n ];
    index=0;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            for (int k = 0; k < n; k++){
                RHS[index++] = (arr[i] + arr[j] + arr[k]);
            }
        }
    }
    sort(RHS, RHS + (n*n*n));
    sort(LHS, LHS + (n*n*n));
    int result = findsamenumbers(LHS, RHS, n);
    cout<<"Number of sextuplets that satisfy an equation: "<<result;
    return 0;
}

আউটপুট

Number of sextuplets that satisfy an equation: 3

উপরের প্রোগ্রামের ব্যাখ্যা

এই প্রোগ্রামে, আমরা LHS এবং RHS এর প্রতিটি ফলাফল রাখার জন্য দুটি অ্যারে তৈরি করছি। LHS-এ (a, b, c) এবং RHS-এ (d, e, f) প্রতিটি সম্ভাব্য মান রাখার জন্য আমরা তিনটি নেস্টেড লুপ ব্যবহার করছি। এর পরে, আমরা উভয় অ্যারের তুলনা করতে উভয় অ্যারেকে সাজাই এবং উভয় অ্যারেতে একই মান খুঁজে বের করি, উভয় অ্যারেকে ফাইন্ডসামেনম্বার() ফাংশনে পাস করি।

findsamenumber() ফাংশনে, আমরা দুটি নেস্টেড লুপ ব্যবহার করে একই মান পরীক্ষা করি। যখন আমরা দুটি উপাদান একই খুঁজে পাই, তখন আমরা উভয় অ্যারেতে সেই সংখ্যার ফ্রিকোয়েন্সি পরীক্ষা করি যাতে প্রতিটি সম্ভাব্য মান গণনা করা হয়।

if(arr1[i] == arr2[j]){
   count++;
   int temp = arr1[i];
   while(temp==arr1[++i]){
      count++;
   }
   while(temp==arr2[++j]){
      count++;
   }

উপসংহার

এই নিবন্ধে, আমরা সেক্সটুপ্লেটের সংখ্যা সমাধান করেছি যা একটি সমীকরণকে সন্তুষ্ট করে যেখানে প্রদত্ত অ্যারে রয়েছে। আমরা 6টি পরিবর্তনশীল সমীকরণ (a + b + c) * e / d =f এ ভেরিয়েবলের সম্ভাব্য প্রতিটি মান খুঁজে পেয়েছি। সি, জাভা এবং পাইথনের মতো অন্য যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজ এ আমরা এই সমস্যার সমাধান করতে পারি।


  1. C++ ব্যবহার করে পঞ্চভুজ পিরামিডাল নম্বর খুঁজুন

  2. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে বিটওয়াইজ বা>=K আছে সাবয়ারের সংখ্যা খুঁজুন

  4. C++ ব্যবহার করে স্টপিং স্টেশনের সংখ্যা খুঁজুন