इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो एक संख्या को इस तरह ढूंढता है कि प्रत्येक सरणी तत्व के साथ इसका मॉड्यूलस समान हो। आइए एक उदाहरण देखें।
इनपुट - गिरफ्तारी ={10, 4, 2}
आउटपुट - 1 2
अगर दो नंबर हैं x, y और x> y , मान लें कि x - y =d.
फिर x =y + d ।
मान लें कि हमारे पास एक संख्या है k जैसे कि x%k =y%k। मॉड्यूलो लागू करें k उपरोक्त समीकरण के लिए और d . का मान ज्ञात करें ।
x%k = (y+d)%k y%k = y%k +d%k d%k = 0
उपरोक्त गणना से, यदि संख्या k x . के बीच के अंतर का भाजक है और y . तब यह संख्याओं का भाजक होगा x और y ।
आइए समान अवधारणा को तत्वों की सरणी पर लागू करें। और k का मान ज्ञात कीजिए। समस्या को हल करने के लिए कदम देखें।
-
संख्याओं के साथ सरणी प्रारंभ करें
-
यहां, d सरणी तत्वों के अधिकतम और न्यूनतम मानों के बीच का अंतर होगा।
-
सॉर्ट विधि का उपयोग करके सरणी के मानों को क्रमबद्ध करें।
-
अंतिम और पहली संख्याओं के बीच का अंतर ज्ञात कीजिए।
-
यदि अंतर शून्य है, तो सभी संख्याएँ समान हैं। फिर किसी भी संख्या वाले मॉड्यूल का परिणाम वही परिणाम देता है।
-
नहीं तो d . के भाजक का पता लगाएं . और उन्हें स्टोर करें।
-
सभी भाजक पर पुनरावृति करें और वह संख्या ज्ञात करें जिसका सभी सरणी तत्वों के साथ मॉड्यूल समान है।
उदाहरण
आइए कोड देखें।
#include <bits/stdc++.h> using namespace std; void findNumbers(int arr[], int n) { sort(arr, arr + n); int d = arr[n - 1] - arr[0]; // check whether all elements are same or not if (d == 0) { cout << "Infinite number of k's"; return; } // finding the divisors of d vector <int> v; for (int i = 1; i * i <= d; i++) { if (d % i == 0) { v.push_back(i); if (i != d / i) { v.push_back(d / i); } } } // findind the k's for (int i = 0; i < v.size(); i++) { int temp = arr[0] % v[i]; int j; for (j = 1; j < n; j++) { if (arr[j] % v[i] != temp) { break; } } if (j == n) cout << v[i] << " "; } cout << endl; } int main() { int arr[] = {10, 4, 2}; findNumbers(arr, 3); return 0; }
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
1 2
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।