কম্পিউটার

C++ ব্যবহার করে সমকোণী ত্রিভুজ গঠনের জন্য হাইপোটেনাস এবং ক্ষেত্রফলের সম্ভাব্য জোড়ার সংখ্যা খুঁজুন


এই প্রবন্ধে, আমরা ব্যাখ্যা করব কিভাবে C++ এ একটি সমকোণী ত্রিভুজ গঠনের সম্ভাব্য জোড়ার সংখ্যা এবং ক্ষেত্রফলকে সমাধান করা যায়।

আমাদের একটি কর্ণের সম্ভাব্য সব জোড়ার সংখ্যা এবং ক্ষেত্রফল ( H, A ) নির্ণয় করতে হবে যাতে H কে কর্ণ এবং A কে ক্ষেত্রফল হিসেবে সমকোণী ত্রিভুজ গঠন করতে হয়।

এই উদাহরণে -

x =সমকোণী ত্রিভুজের ভিত্তি

y =সমকোণী ত্রিভুজের উচ্চতা

H =সমকোণী ত্রিভুজের কর্ণ

আমরা সমকোণী ত্রিভুজের ক্ষেত্রফল জানি,

A =( x * y ) / 2

অথবা

4 * A 2 =( x * y ) 2 …… (1)

এছাড়াও আমরা জানি

x 2 + y 2 =H 2 …… (2)

সমাধান করা (1) এবং (2)

4 * A 2 =x 2 ( H 2 - x 2 )

দ্বিঘাত সমীকরণটি x2 তে সমাধান করা এবং D (বৈষম্যকারী)>=0 ( x বিদ্যমান থাকার জন্য)

আমরা পাই, H2>=4 * A (সমকোণ ত্রিভুজ বিদ্যমান থাকার শর্ত)

এখানে উদাহরণ -

Input : array H[ ] = { 3, 6, 8 } : A[ ] = { 2, 31, 12 }
Output : 4
Explanation : possible pairs of Hypotenuse and Area ( H, A ) are ( 3, 2 ), ( 6, 2 ), ( 8, 2 ) and ( 8, 12 ).

Input : array H[ ] = { 2, 5, 9 } : A[ ] = { 3, 11, 7 }
Output : 4
Explanation : possible pairs of Hypotenuse and Area ( H, A ) are possible pairs of Hypotenuse and Area ( H, A ) are ( 5, 3 ), ( 9, 3 ), ( 9, 11 ) and ( 9, 7 ).

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

এখন আমরা প্রদত্ত কাজটি সম্পাদন করার জন্য দুটি ভিন্ন পদ্ধতি ব্যবহার করব -

ব্রুট ফোর্স অ্যাপ্রোচ

এই সহজ পদ্ধতিতে, আমরা কর্ণ এবং ক্ষেত্রফলের সম্ভাব্য সমস্ত জোড়া খুঁজে পাই ( H, A), তারা শর্ত পূরণ করে কিনা তা পরীক্ষা করে দেখুন, h2>=4 * A বা না, এবং পাওয়া প্রতিটি জোড়ার জন্য গণনা করুন যা এই শর্তটি সন্তুষ্ট করে।

উদাহরণ

#include <iostream>
using namespace std;
int main(){
    int H[ ] = { 2,5,9}; // array of hypotenuse
    int s1 = sizeof(H)/sizeof(H[0]);
    int A[ ] = { 3, 11, 7};// array of area
    int s2 = sizeof(A)/sizeof(A[0]);
    int count = 0;// initialising count to 0
    // finding all possible pairs
    for (int i = 0; i < s1; i++) {
        for (int j = 0; j < s2; j++) {
            // checking whether current pair satisfies the condition
            if (H[i] * H[i] >= 4 * A[j]){
                count++;

            }
        }
    }
    cout << "Number of possible pairs of ( H, A ): " << count ;
    return 0;
}

আউটপুট

Number of possible pairs of ( H, A ): 4

ব্যাখ্যা

এই কোডে, আমরা সমীকরণকে সন্তুষ্ট করে জোড়ার গণনা রাখতে গণনা ভেরিয়েবল ব্যবহার করি এবং (H, A) জোড়া তৈরি করতে নেস্টেড লুপ ব্যবহার করি। এই কোডের সময় জটিলতা হল O(n2) যা একটি কার্যকর পদ্ধতি নয়। আসুন দ্বিতীয় পদ্ধতিটি বুঝতে পারি।

দক্ষ পদ্ধতি

এই পদ্ধতিতে, আমরা প্রথমে উভয় অ্যারেকে ক্রমবর্ধমান ক্রমে বাছাই করছি, তারপর H 2 চেক করার সময় সর্বাধিক ক্ষেত্রফল খুঁজে বের করার জন্য আমরা যেকোন কর্ণের দৈর্ঘ্য খুঁজে পাচ্ছি।> 4 * A .

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int main (){
    int H[] = { 2, 5, 9 };
    int s1 = sizeof (H) / sizeof (H[0]);
    int A[] = {  3, 11, 7 };
    int s2 = sizeof (A) / sizeof (A[0]);
    int count = 0;
    // Sorting both the arrays
    sort (H, H + s1);
    sort (A, A + s2);
    int temp = -1;
    for (int i = 0; i < s1; i++){
        // Applying binary search for
        // every Hypotenuse Length
        int flag1 = 0;
        int flag2 = s2 - 1;
        while (flag1 <= flag2){
            int mid = flag1 + (flag2 - flag1) / 2;
            if ((H[i] * H[i]) >= (4 * A[mid])){
                temp = mid;
                flag1 = mid + 1;
            }
            else{
                flag2 = mid - 1;
            }
        }
        if (temp != -1){// Check if we get any possible area
            count += temp + 1;
        }
    }
    cout << "Number of possible pairs of (H, A): " << count;
    return 0;
}

আউটপুট

Number of possible pairs of ( H, A ): 4

উপরের কোডের ব্যাখ্যা

এই কোডে, আমরা প্রথমে উভয় অ্যারেকে ক্রমবর্ধমান ক্রমে বাছাই করছি, এবং তারপরে আমরা সর্বাধিক এলাকা খুঁজে বের করার জন্য বাইনারি অনুসন্ধান ব্যবহার করে প্রতিটি সম্ভাব্য দৈর্ঘ্য পরীক্ষা করছি।

ধরা যাক ক্ষেত্রফল A[ ] এর অ্যারেতে সূচক 3-এ সর্বাধিক ক্ষেত্রফল পাওয়া যায়, তাহলে সূচক 3-এর চেয়ে কম সমস্ত ক্ষেত্রও সমীকরণটি পূরণ করবে যাতে আমরা 3টি সম্ভাব্য জোড়া তৈরি করতে পারি।

উপসংহার

এই নিবন্ধে, আমরা একটি সমকোণী ত্রিভুজ তৈরি করতে ব্যবহৃত হাইপোটেনাস এবং ক্ষেত্রফল জোড়ার সংখ্যা খুঁজে বের করার জন্য একটি সমস্যার সমাধান করেছি। আমরা ব্রুট ফোর্স পদ্ধতি প্রয়োগ করেছি, যার সময়ের জটিলতা ছিল O(n 2 ) ), এবং দক্ষ পদ্ধতি, যার সময় জটিলতা ছিল O(s1 log(s2))। আশা করি আপনি এই নিবন্ধটি সহায়ক বলে মনে করেন৷


  1. C++ এ প্রদত্ত দুটি বাহু সহ একটি সমকোণী ত্রিভুজের কর্ণ নির্ণয় করুন

  2. C++ ব্যবহার করে প্রদত্ত বিন্দু থেকে সম্ভাব্য চতুর্ভুজের সংখ্যা নির্ণয় করুন

  3. C++ ব্যবহার করে ফুটবলে পেন্টাগন এবং হেক্সাগনের সংখ্যা খুঁজুন

  4. C++ ব্যবহার করে একটি অ্যারেতে জোড়ার সংখ্যা খুঁজুন যাতে তাদের XOR 0 হয়।