मान लीजिए हमारे पास एक सरणी A है। हमें सबएरे की अधिकतम लंबाई ढूंढनी है, जिसका LCM उस सबएरे के एलिमेंट्स के उत्पाद के समान है। यदि ऐसा सबएरे नहीं मिलता, तो -1 वापस करें। मान लीजिए सरणी {6, 10, 21} है, तो लंबाई 2 है, क्योंकि सबएरे {10, 21} है, जिसका LCM 210 है, और उत्पाद भी 210 है।
दृष्टिकोण सीधा है। हमें लंबाई 2 से अधिक या बराबर के हर संभावित सबएरे की जांच करनी होगी। यदि सबएरे शर्त को पूरा करता है, तो उत्तर को उत्तर और सबएरे की लंबाई के अधिकतम के रूप में अपडेट करें।
उदाहरण
#include <iostream> using namespace std; int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int maxLengthLCMSubarray(int arr[], int n) { int len = -1; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { long long lcm = 1LL * arr[i]; long long product = 1LL * arr[i]; for (int k = i + 1; k <= j; k++) { lcm = (((arr[k] * lcm)) / (gcd(arr[k], lcm))); product = product * arr[k]; } if (lcm == product) { len = max(len, j - i + 1); } } } return len; } int main() { int arr[] = {8, 2, 6, 10, 13, 21, 7}; int n = sizeof(arr) / sizeof(arr[0]); cout << "अधिकतम लंबाई: " << maxLengthLCMSubarray(arr, n); } आउटपुट
अधिकतम लंबाई: 3