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

C++ में N से 1 जोड़कर और अनुगामी शून्य हटाकर उत्पन्न अद्वितीय संख्याओं की गिनती


समस्या विवरण

हमें एक संख्या N इनपुट के रूप में दी गई है। N पर दो ऑपरेशन करें और प्रक्रिया में उत्पन्न अद्वितीय संख्याओं की संख्या पहचानें। चरण होंगे:

  • संख्या में 1 जोड़ें
  • उत्पन्न संख्या से अनुगामी शून्य हटाएं, यदि कोई हो

यदि N 8 है तो उत्पन्न संख्याएं होंगी:

चरण 1 लागू: 8 → 9 →

चरण 2 लागू: 1 → (10 से 0 हटाया)

चरण 1 लागू: 2 → 3 → 4 → 5 → 6 → 7 → 8 (वही क्रम)

अद्वितीय संख्याओं की गिनती 9 होगी।

उदाहरण

इनपुट

N=21

आउटपुट

अद्वितीय संख्याओं की गिनती: 18

व्याख्या

संख्याएं होंगी: 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3 ---अब वही क्रम। अद्वितीय संख्याएं: 18

इनपुट

N=38

आउटपुट

अद्वितीय संख्याओं की गिनती: 11

व्याख्या

संख्याएं होंगी: 38, 39, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4 ---अब वही क्रम। अद्वितीय संख्याएं: 11

दृष्टिकोण

इस दृष्टिकोण में हम एक unordered_set<int> U_S बनाएंगे जिसमें चरण 1 और 2 लागू करने के बाद उत्पन्न सभी अद्वितीय संख्याएं होंगी। यदि संख्याएं दोहराती हैं, तो हम पुनरावृत्ति रोक देंगे। सेट का आकार हमें प्रक्रिया में उत्पन्न अद्वितीय संख्याओं की संख्या देगा।

एल्गोरिदम चरण

  • संख्या N को पूर्णांक के रूप में लें।
  • जनरेट की गई संख्याओं को डालने के लिए unordered_set<int> U_S लें।
  • फंक्शन unique_N(unordered_set<int>& U_S, int N) सेट और N लेता है और सभी संख्याएं अद्वितीय होने तक सेट U_S में संख्याएं जोड़ता है।
  • यदि U_S.count(N) 1 लौटाता है तो इसका मतलब N पहले से सेट में मौजूद है। इसलिए संख्याएं दोहराएंगी, फंक्शन से लौटें।
  • अन्यथा N को सेट में डालें और ऑपरेशन 1 लागू करें (1 से बढ़ाएं)।
  • जांचें कि संख्या N में अनुगामी शून्य हैं (10 का गुणक है)।
  • यदि N % 10 0 है, तो इसे 10 से विभाजित करके अनुगामी शून्य हटाएं।
  • अपडेट किए गए N के साथ फंक्शन unique_N() कॉल करें।
  • फंक्शन से लौटने पर, सेट U_S के आकार के रूप में गिनती लें।
  • परिणाम के रूप में गिनती प्रिंट करें।

C++ कोड उदाहरण

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

void unique_N(unordered_set<int>& U_S, int N) {
    if (U_S.count(N)) {
        return;
    }
    U_S.insert(N);
    N = N + 1;
    while (N % 10 == 0) {
        N = N / 10;
    }
    unique_N(U_S, N);
}

int main() {
    int N = 7;
    unordered_set<int> U_S;
    unique_N(U_S, N);
    int count = U_S.size();
    cout << "अद्वितीय संख्याओं की गिनती: " << count;
    return 0;
}

आउटपुट

अद्वितीय संख्याओं की गिनती: 9
  1. - C++ में रेंज में उन संख्याओं की गिनती जिनके अंक और q से गुणनफल के अंक असमान हैं

    रेंज वेरिएबल के रूप में दो संख्याएं start और end और एक पूर्णांक q इनपुट के रूप में दिया गया है। लक्ष्य रेंज के भीतर उन संख्याओं को ढूंढना है जैसे कि संख्या और q से इसका गुणनफल कोई सामान्य अंक न रखें। यदि संख्या 5 है और q 3 है तो गुणनफल 15 होगा। दोनों 5 और 15 में सामान्य अंक 5 है। यदि संख्या 2 है और

  1. - C++ में खेल में शून्य या उससे कम होने वाली संख्याओं की गिनती

    समस्या विवरण धनात्मक संख्याओं की एक सरणी और दो पूर्णांक A और B दिए गए हैं। दो खिलाड़ी एक खेल खेल रहे हैं जिसमें वे सरणी में संख्याओं को कम करेंगे। खिलाड़ी 1 सरणी के किसी भी तत्व को A से कम कर सकता है और खिलाड़ी 2 सरणी के किसी भी तत्व को B से बढ़ा सकता है। लक्ष्य उन संख्याओं की संख्या ज्ञात करना है

  1. C++ में एक चाल में बिशप द्वारा देखे जा सकने वाले वर्गों की कुल संख्या गिनें C++ में एक चाल में बिशप द्वारा देखे जा सकने वाले वर्गों की कुल संख्या गिनें

    समस्या विवरण एक शतरंज बोर्ड जिसे 8x8 ग्रिड के रूप में दर्शाया गया है, हमें बिशप की स्थिति पंक्ति और कॉलम के रूप में दी गई है। लक्ष्य उन वर्गों की कुल संख्या ज्ञात करना है जिन्हें बिशप एक चाल में देख सकता है। हम जानते हैं कि बिशप सभी दिशाओं में चल सकता है (विकर्ण रूप से बाएं ऊपर/नीचे और दाएं ऊपर/नीच