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

लगातार शून्यों के जोड़ों की गणना (अनुक्रम जनरेटर में) - C++

समस्या विवरण

हमारे पास एक अनुक्रम जनरेटर है जो 1 से शुरू होता है। प्रत्येक चरण में 0→10 और 1→01 हो जाता है।

  • चरण 1: 01
  • चरण 2: 1001
  • चरण 3: 01101001
  • चरण 4: 1001011001101001

लक्ष्य दिए गए चरण संख्या के लिए लगातार '00' जोड़ों की संख्या ज्ञात करना है।

पैटर्न विश्लेषण

  • चरण 1: 0 जोड़े
  • चरण 2: 1 जोड़ा
  • चरण 3: 1 जोड़ा
  • चरण 4: 3 जोड़े
  • चरण 5: 5 जोड़े
  • चरण 10: 171 जोड़े

अनुक्रम 2 की घात में बढ़ता है और 12 लंबाई के बाद दोहराता है। प्रत्येक 12-लंबाई पैटर्न में 2 जोड़े होते हैं।

सूत्र: tmp = 2^steps / 12, pairs = 1 + 2*tmp

एल्गोरिदम

  1. चरण संख्या decimal लें
  2. यदि decimal <= 1 → 0 लौटाएँ
  3. यदि decimal == 2 या 3 → 1 लौटाएँ
  4. अन्यथा: temp = pow(2, decimal) / 12, count = 2*temp + 1
  5. count लौटाएँ

C++ कार्यान्वयन

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

int Zero_pairs(int decimal) {
    if (decimal <= 1) return 0;
    if (decimal == 2 || decimal == 3) return 1;
    
    long long temp = (1LL << decimal) / 12; // 2^decimal / 12
    return 2 * temp + 1;
}

int main() {
    int decimal = 7;
    cout << "Count: " << Zero_pairs(decimal);
    return 0;
}

आउटपुट

Count: 21
  1. - C++ में दिए गए योग वाले युग्मों की गणना

    हमें एक पूर्णांक सरणी दी गई है और कार्य दिए गए सरणी मानों का उपयोग करके बनने वाले कुल युग्मों की संख्या गिनना है जैसे कि युग्मों का योग दिए गए योग के बराबर हो। इनपुट - int arr[] = {2, 8, 1, 5, 11}, sum = 10 आउटपुट - दिए गए योग 13 वाले युग्मों की संख्या - 2 व्याख्या - a1a2a1 + a2

  1. - C++ में बिटवाइज OR सम संख्या वाले युग्मों की गणना

    हमें एक पूर्णांक सरणी दी गई है और कार्य दिए गए सरणी मानों का उपयोग करके बनने वाले कुल युग्मों की संख्या गिनना है जैसे कि युग्मों पर OR ऑपरेशन का परिणाम एक सम संख्या हो। OR ऑपरेशन के लिए सत्य सारणी ABA OR B 000 101 011 111 इनपुट - int arr[] = {2,

  1. - C++ में सरणी में विभाज्य जोड़ों की गिनती करें

    हमें किसी भी आकार की एक सरणी दी गई है जिसमें पूर्णांक तत्व हैं और कार्य सरणी में जोड़ों की संख्या की गणना करना है जैसे कि एक जोड़ी का एक तत्व जोड़ी के दूसरे तत्व को विभाजित करता है। उदाहरण के लिए इनपुट - int arr[] = {1, 2, 3, 6} आउटपुट - गिनती 4 है व्याख्या - (1,2), (1,3), (1,6) और (3,6) वे जोड़े