मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A[] है। हमें एक और सरणी B[] ढूंढनी है, जिसका आकार n+1 है, जैसे कि B[i] और B[i + 1] का GCD A[i] है। यदि कई समाधान हैं, तो उनमें से एक को प्रिंट करें जिसका सरणी योग न्यूनतम है। तो अगर ए =[1, 2, 3], तो आउटपुट [1, 2, 6, 3]
. होगाजब A में केवल एक ही तत्व K हो, तो B =[K, K]। तो बी [0] ए [0] होगा। अब विचार करें कि हम इंडेक्स i तक कर चुके हैं, इसलिए हमने पहले ही इंडेक्स i को प्रोसेस कर लिया है, और B[i + 1] की गणना की है। अब B[i + 1] और B[i + 2] =A[i + 1] की GCD, फिर B[i + 2] और B[i + 3] =A[i + 2] की GCD है। तो B[i + 2]>=A[i + 1], A[i + 2] का LCM। चूंकि हम न्यूनतम राशि चाहते हैं, तो हम बी [i + 2] का न्यूनतम मूल्य प्राप्त करना चाहते हैं, इसलिए बी [i + 2] - ए [i + 2] और ए [i + 3]
का एलसीएमउदाहरण
#include <iostream>
#include <algorithm>
using namespace std;
int getLCM(int a, int b) {
return (a * b) / __gcd(a, b);
}
void gcdArray(int A[], int n) {
cout << A[0] << " ";
for (int i = 0; i < n - 1; i++)
cout << getLCM(A[i], A[i + 1]) << " ";
cout << A[n - 1];
}
int main() {
int A[] = { 1, 2, 3 };
int n = sizeof(A) / sizeof(A[0]);
cout << "Constructed array: ";
gcdArray(A, n);
} आउटपुट
Constructed array: 1 2 6 3