কম্পিউটার

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


ধরুন আমাদের আলাদা ধনাত্মক পূর্ণসংখ্যা সহ একটি সাজানো অ্যারে আছে। আমাদের সমস্ত ট্রিপলেটগুলি খুঁজে বের করতে হবে, যা অবিচ্ছেদ্য সাধারণ অনুপাতের সাথে জ্যামিতিক অগ্রগতি গঠন করে। ধরুন অ্যারের উপাদানগুলি হল [1, 2, 6, 10, 18, 54], ট্রিপলেটগুলি হল (2, 6, 18), এবং (6, 18, 54), এগুলি জ্যামিতিক অগ্রগতি তৈরি করছে৷

এটি সমাধান করার জন্য, আমরা দ্বিতীয় উপাদান থেকে শুরু করব, এবং প্রতিটি উপাদানকে মধ্যম উপাদান হিসাবে ঠিক করব, এবং ছোট এবং বড় উপাদানগুলির জন্য অনুসন্ধান করব। মধ্যম উপাদান arr[j] জ্যামিতিক অগ্রগতির মাঝামাঝি হওয়ার জন্য, পূর্ববর্তী উপাদান arr[i] এবং arr[k] এর মত হবে

$$\frac{arr[j]}{arr[i]}=\frac{arr[k]}{arr[j]}=r𝑟$$

উদাহরণ

#include<iostream>
using namespace std;
void getTriplets(int arr[], int n) {
   for (int j = 1; j < n - 1; j++) {
      int i = j - 1, k = j + 1;
      while (i >= 0 && k <= n - 1) {
         while (arr[j] % arr[i] == 0 && arr[k] % arr[j] == 0 && arr[j] / arr[i] == arr[k] / arr[j]) {
            cout << "("<< arr[i] << ", " << arr[j] << ", " << arr[k] << ")" << endl;
               k++;
               i--;
         }
         if(arr[j] % arr[i] == 0 && arr[k] % arr[j] == 0) {
            if(arr[j] / arr[i] < arr[k] / arr[j])
               i--;
         else
            k++;
         }else if (arr[j] % arr[i] == 0)
            k++;
         else
            i--;
      }
   }
}
int main() {
   int arr[] = {1, 2, 6, 10, 18, 54};
   int n = sizeof(arr) / sizeof(arr[0]);
   getTriplets(arr, n);
}

আউটপুট

(2, 6, 18)
(6, 18, 54)

  1. অ্যারেতে সবচেয়ে বড় ডি খুঁজুন যেমন সি++ এ a + b + c =d

  2. সমস্ত অ্যারে উপাদান বরাদ্দ করার জন্য সর্বনিম্ন মান খুঁজুন যাতে অ্যারে পণ্য C++ এ আরও বড় হয়

  3. একটি অ্যারে উপাদান খুঁজুন যাতে সমস্ত উপাদান এটি দ্বারা c++ ব্যবহার করে বিভাজ্য হয়

  4. একটি অ্যারেতে সমস্ত জোড়া (a, b) খুঁজুন যেমন একটি % b =k C++ এ