Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में 'k' ढूंढना जिससे प्रत्येक सरणी तत्व के साथ मॉड्यूलस समान हो


परिचय

इस ट्यूटोरियल में हम एक ऐसा प्रोग्राम लिखेंगे जो एक संख्या ढूंढता है जिससे सरणी के प्रत्येक तत्व के साथ उसका मॉड्यूलस (modulus) समान हो। आइए एक उदाहरण देखते हैं।

इनपुट - arr = {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 का भी भाजक होगा।

समस्या समाधान के चरण

  1. सरणी को संख्याओं से इनिशियलाइज़ करें।
  2. यहां, d सरणी तत्वों के अधिकतम और न्यूनतम मानों का अंतर होगा।
  3. सरणी के मानों को सॉर्ट मेथड का उपयोग करके सॉर्ट करें।
  4. अंतिम और पहली संख्याओं के बीच का अंतर ढूंढें।
  5. यदि अंतर शून्य है, तो सभी संख्याएं समान हैं। तब किसी भी संख्या के साथ मॉड्यूलो समान परिणाम देता है।
  6. अन्यथा संख्या d के भाजक ढूंढें और उन्हें स्टोर करें।
  7. सभी भाजकों पर पुनरावृत्ति करें और वह संख्या ढूंढें जिसका मॉड्यूलो सभी सरणी तत्वों के साथ समान हो।

उदाहरण कोड

#include <bits/stdc++.h>
using namespace std;

void findNumbers(int arr[], int n) {
    sort(arr, arr + n);
    int d = arr[n - 1] - arr[0];
    // जांचें कि सभी तत्व समान हैं या नहीं
    if (d == 0) {
        cout << "Infinite number of k's";
        return;
    }
    // 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);
            }
        }
    }
    // 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

निष्कर्ष

सरणी {10, 4, 2} के लिए, अधिकतम = 10, न्यूनतम = 2, अंतर = 8। 8 के भाजक: 1, 2, 4, 8। इनमें से 1 और 2 सभी तत्वों के साथ समान मॉड्यूलो देते हैं (10%1=4%1=2%1=0, 10%2=4%2=2%2=0)। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।


  1. C++ में डीरेंजमेंट की गणना (ऐसा क्रमपरिवर्तन जिसमें कोई तत्व अपनी मूल स्थिति में न हो) C++ में डीरेंजमेंट की गणना (ऐसा क्रमपरिवर्तन जिसमें कोई तत्व अपनी मूल स्थिति में न हो)

    डीरेंजमेंट N संख्याओं का एक क्रमपरिवर्तन है जिसमें कोई संख्या अपनी मूल स्थिति पर नहीं आती। उदाहरण के लिए {1,2,3} का एक संभावित डीरेंजमेंट {2,1,3} है। इसमें कोई तत्व अपनी मूल स्थिति पर नहीं है। यहां लक्ष्य N संख्याओं के लिए संभावित डीरेंजमेंट की गणना करना है। हम इसे रिकर्सिव समाधान का उपयोग करके करें

  1. - C++ में निरपेक्ष अंतर के न्यूनतम योग वाला एरे तत्व

    यह प्रोग्राम दिए गए एरे के न्यूनतम निरपेक्ष अंतर को खोजने के लिए है जहां हमारे पास एक एरे है जिसमें विशिष्ट तत्व हैं। इस अवधारणा को बेहतर ढंग से सीखने के लिए, आइए आवश्यक चीजों को दोहराएं: एरे (Array) समान डेटा प्रकार के तत्वों का एक कंटेनर है। एरे की लंबाई पूर्वनिर्धारित होनी चाहिए। निरपेक्ष अंतर (

  1. - C++ प्रोग्राम: 'k' खोजें जैसे कि प्रत्येक एरे तत्व के साथ इसका मॉड्यूलस समान हो

    इस लेख में, हम एक प्रोग्राम पर चर्चा करेंगे जो एक पूर्णांक k खोजता है, जैसे कि दिए गए एरे के प्रत्येक तत्व के साथ इसका मॉड्यूलस समान हो। उदाहरण के लिए, मान लीजिए हमें एक एरे दिया गया है, arr = {12, 22, 32} तो हमारे पास आउटपुट मान k = 1, 2, 5, 10 होगा। y)। तब हमारे पास (y + अंतर) % k = y % k होगा।