मान लीजिए कि हमारे पास अलग-अलग सकारात्मक पूर्णांक के साथ एक क्रमबद्ध सरणी है। हमें सभी त्रिगुणों को खोजना है, जो अभिन्न सामान्य अनुपात के साथ ज्यामितीय प्रगति बनाते हैं। मान लीजिए कि सरणी तत्व [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)