কম্পিউটার

সাজানো অ্যারেতে সমস্ত ট্রিপলেট প্রিন্ট করুন যা C++ এ AP গঠন করে


এই সমস্যায়, আমাদেরকে সংখ্যার একটি সাজানো বিন্যাস দেওয়া হয়েছে এবং আমাদেরকে পাটিগণিতের অগ্রগতির আকারে ট্রিপলেটগুলি খুঁজে বের করতে হবে৷

একটি গাণিতিক অগ্রগতি সংখ্যার একটি সিরিজ যেখানে ধারাবাহিক পদগুলির মধ্যে পার্থক্য একই৷

সমস্যাটি আরও ভালভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক -

Input :
array = {2 , 5 , 7, 8 , 9 , 10}
Output :
2 5 8
5 7 9
7 8 9
8 9 10

এই সমস্যাটি সমাধান করার জন্য, একটি সহজ সমাধান হবে তিনটি লুপ চালানো এবং সমস্ত ট্রিপলেট চেক করা যদি তারা এপি-তে থাকে। কিন্তু এই পদ্ধতিতে n 3 অর্ডারের সময় জটিলতা রয়েছে .

একটি ভাল সমাধান হ্যাশিং ব্যবহার করা হয়. এই পদ্ধতিতে, আমরা অ্যারের দ্বিতীয় উপাদান থেকে শুরু করব এবং প্রতিটি উপাদানকে AP-এর মধ্যম উপাদান হিসাবে বিবেচনা করব এবং এটি AP গঠন করে কিনা তা পরীক্ষা করে দেখব।

উদাহরণ

#include <iostream>
using namespace std;
void TripletsAP(int arr[], int n){
   for (int i = 1; i < n - 1; i++){
      for (int j = i - 1, k = i + 1; j >= 0 && k < n;){
         if (arr[j] + arr[k] == 2 * arr[i]){
            cout<<arr[j]<<"\t"<<arr[i]<<"\t"<< arr[k] << endl;
            k++;
            j--;
         }
         else if (arr[j] + arr[k] < 2 * arr[i])
            k++;
         else
            j--;
      }
   }
}
int main(){
   int arr[] = {2 , 5 , 7, 8 , 9 , 10};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The triplets that are in AP are : \n";
   TripletsAP(arr, n);
   return 0;
}

আউটপুট

AP-তে যে ট্রিপলেটগুলি রয়েছে তা হল −

2 5 8
5 7 9
7 8 9
8 9 10

  1. C++ এ একটি অ্যারেতে সমস্ত জোড়ার যোগফলের XOR এর যোগফল

  2. উপাদানগুলি যোগ করতে হবে যাতে একটি পরিসরের সমস্ত উপাদান C++ এ অ্যারেতে উপস্থিত থাকে

  3. C++-এর সমস্ত অ্যারের উপাদান দ্বারা বিভাজ্য একটি পরিসরে সংখ্যা গণনা করুন

  4. C++ এ একটি অ্যারেতে সমস্ত মৌলিক সংখ্যার গুণফল