मान लीजिए कि हमारे पास एक सरणी गिरफ्तारी और दूसरा मान k है। हमें सरणी के GCD को k के गुणज के बराबर बनाने के लिए न्यूनतम संख्या में संक्रियाओं का पता लगाना होगा। इस मामले में, ऑपरेशन मूल्य में वृद्धि या कमी कर रहा है। मान लीजिए कि सरणी {4, 5, 6} की तरह है, और k 5 है। हम 4 को 1 से बढ़ा सकते हैं और 6 को 1 से घटा सकते हैं, इसलिए यह 5 हो जाता है। यहां कई ऑपरेशन 2 हैं।
परिणाम प्राप्त करने के लिए हमें इन चरणों का पालन करना होगा -
कदम -
- सरणी में सभी तत्वों के लिए, चरण 2 और 3 का पालन करें
- यदि e 1 नहीं है, और e> k है, तो परिणाम को min (e mod k) और (k – e mod k) के रूप में बढ़ाएं।
- अन्यथा, परिणाम + k – e . होगा
- वापसी का परिणाम
उदाहरण
#include <iostream>
using namespace std;
int countMinOp(int arr[], int n, int k) {
int result = 0;
for (int i = 0; i < n; ++i) {
if (arr[i] != 1 && arr[i] > k) {
result = result + min(arr[i] % k, k - arr[i] % k);
} else {
result = result + k - arr[i];
}
}
return result;
}
int main() {
int arr[] = { 4, 5, 6 };
int n = sizeof(arr) / sizeof(arr[0]);
int k = 5;
cout << "Minimum operation required: " << countMinOp(arr, n, k);
} आउटपुट
Minimum operation required: 2