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

C++ प्रोग्राम दिए गए क्रम में अलग-अलग तत्वों का पता लगाने के लिए

मान लीजिए हमें तीन पूर्णांक संख्याएँ n, x, y और z दी गई हैं। हमें दिए गए पूर्णांकों से एक अनुक्रम बनाना है जहां अनुक्रम का पहला आइटम है (x modulo 2 31 ) पहले तत्व के अलावा, अनुक्रम में अन्य तत्व ai =(ए<उप>(i-1) * y + z) मॉड्यूल 2 31 , जहां 1 i n - 1. हमें अपने द्वारा बनाए गए अनुक्रम में भिन्न पूर्णांकों की संख्या ज्ञात करनी है।

इसलिए, यदि इनपुट n =5, x =1, y =2, z =1 जैसा है, तो आउटपुट 5 होगा।

अद्वितीय मान {1, 3, 7, 15, 31} हैं। तो, उत्तर 5 है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • रक्षा मंत्रालय:=2^31
  • एक सरणी अस्थायी परिभाषित करें
  • मॉड के मान के लिए अस्थायी सरणी का आकार बदलें
  • p :=x मॉड एमओडी
  • अस्थायी[p] :=सच
  • उत्तर:=1
  • इनिशियलाइज़ i :=1 के लिए, जब i करें
  • p :=((p * y) + z) मॉड मॉड
  • यदि अस्थायी[p] सत्य है, तो −
    • लूप से बाहर आएं
  • उत्तरों को 1 से बढ़ाएँ
  • अस्थायी[p] :=सच
  • वापसी उत्तर
  • उदाहरण

    आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    #include <cmath>
    #include <cstdio>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    const long long MOD = 2147483648;
    
    int solve(int n, long long x, long long y, long long z) {
       vector<bool> temp;
       temp.resize(MOD);
       long long p = x % MOD;
          temp[p] = true;
          int ans = 1;
          for (int i = 1; i < n; ++i) {
             p = ((p * y) + z) % MOD;
             if (temp[p])
                break;
             ++ans;
             temp[p] = true;
       }
       return ans;
    }
    
    int main() {
    cout<< solve(5, 1, 2, 1) <<endl;
    return 0;
    }

    इनपुट

    5, 1, 2, 1

    आउटपुट

    5

    1. C++ प्रोग्राम ग्राफ में सुपर वर्टिस का पता लगाने के लिए

      मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं। कोने 1 से n तक गिने जाते हैं, और वे सरणी किनारों में दिए गए किनारों से जुड़े होते हैं। प्रत्येक शीर्ष का 1 से n तक की संख्या के भीतर x मान होता है जो कि सरणी मान में दिया जाता है। अब, हमें ग्राफ से अति शीर्षों का पता लगाना है। एक शीर्ष i को सु

    1. C++ प्रोग्राम एक ग्रिड में प्रबुद्ध कोशिकाओं की संख्या का पता लगाने के लिए

      मान लीजिए, हमें h * w आयामों का एक ग्रिड दिया गया है। ग्रिड में कोशिकाओं में या तो बल्ब या बाधाएं हो सकती हैं। एक लाइट बल्ब सेल स्वयं को और उसके दाएं, बाएं, ऊपर और नीचे की कोशिकाओं को रोशन करता है और प्रकाश कोशिकाओं के माध्यम से चमक सकता है जब तक कि कोई बाधा सेल प्रकाश को अवरुद्ध न करे। एक बाधा सेल

    1. C++ प्रोग्राम दिए गए ग्राफ़ में ब्रिज किनारों की संख्या का पता लगाने के लिए

      मान लीजिए, हमें एक अभारित, अप्रत्यक्ष ग्राफ दिया गया है जिसमें n कोने और m किनारे हैं। ग्राफ़ में ब्रिज का किनारा वह किनारा होता है जिसके हटाने से ग्राफ़ डिस्कनेक्ट हो जाता है। हमें दिए गए आलेख में ऐसे आलेखों की संख्या ज्ञात करनी है। ग्राफ़ में समानांतर किनारे या सेल्फ़-लूप नहीं होते हैं। इसलिए, यद