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

C++ प्रोग्राम दिए गए डिजिटल रूट के साथ एक रेंज में नंबर खोजने के लिए

इसके अंकों का योग किसी संख्या का अंकीय मूल ज्ञात कर सकता है; यदि योग एक अंक है, तो यह एक डिजिटल रूट है। इस ट्यूटोरियल में, हम एक समस्या पर चर्चा करेंगे जहां हमें संख्याओं की एक श्रृंखला और एक पूर्णांक X दिया गया है, और हमें यह गिनने की आवश्यकता है कि श्रेणी में कितनी संख्याएँ डिजिटल जड़ें हैं जैसे कि X जहाँ X एकल-अंकीय संख्या है, उदाहरण के लिए

Input: l = 13, r = 25, X = 4
Output: 2
Explanation: Numbers in the range (13,25) having digit sum 4 are 13 and 22.

Input: l = 11, r = 57
Output: 6

समाधान खोजने के लिए दृष्टिकोण

सरल तरीका

एक सरल दृष्टिकोण में, हम l से r तक की संख्याओं को पार कर सकते हैं और जांच सकते हैं कि क्या इसका योग X के बराबर है। लेकिन यह O(N) की समय जटिलता पैदा करेगा जहां N श्रेणी में कुल संख्या है।

कुशल दृष्टिकोण

एक्स के रूप में डिजिटल रूट के साथ एक श्रेणी में संख्याओं को खोजने के लिए, इसलिए हमें श्रेणी में प्रत्येक संख्या के अंकों के योग की जांच करने की आवश्यकता है कि क्या यह के के बराबर है और अंकों का योग हमेशा संख्या% नौ के बराबर होता है और शेष होने पर यह नौ होता है 0 आता है, इसलिए यदि X =9 है तो इसे 0 में बदलें।

संख्याओं की संख्या ज्ञात करने के लिए पूरी श्रेणी को 9 के समूहों में विभाजित करें। फिर प्रत्येक समूह में ठीक एक संख्या होगी जिसका मॉड्यूल नौ X के बराबर होगा। उसके बाद, बचे हुए नंबरों की जांच करें जो समूहों में नहीं हैं; num% 9 =X की शर्त को पूरा करने के लिए प्रत्येक संख्या को अलग से जांचें।

उदाहरण

उपरोक्त दृष्टिकोण के लिए C++ कोड

#include <bits/stdc++.h>
#define ll long long int
using namespace std;
int main(){
    int l = 13;
    int r = 25;
    int X = 4;
    if (X == 9) X = 0;
    // count all the numbers in the range
    int total = r - l + 1;
    // Divide numbers into maximum groups of 9
    int groups = total/ 9;
    // since for N groups there will be N numbers with modulo 9 equals to X.
    int result = groups;
    // check all the left out numbers
    int left_out = total % 9;
    // checking each left out number separately for the condition.
    for (int i = r; i > r - left_out; i--) {
        int rem = i % 9;
        if (rem == X)
           result++;
    }
    cout << "Total Numbers in a Range( l, r ) with given Digital Root(X) are: " << result;
    return 0;
}

आउटपुट

Total Numbers in a Range( l, r ) with given Digital Root(X) are: 2

निष्कर्ष

इस ट्यूटोरियल में, हमने संख्याओं की एक श्रृंखला और एक डिजिटल रूट के साथ एक समस्या पर चर्चा की। हमें एक्स के रूप में डिजिटल जड़ों वाले सभी नंबरों को खोजने की जरूरत है। हमने संख्याओं को 9 अंकों के समूहों में विभाजित करके इस समस्या को हल करने के लिए एक सरल दृष्टिकोण और एक कुशल दृष्टिकोण पर चर्चा की।

प्रत्येक समूह में एक नंबर होता है जिसमें X के रूप में एक डिजिटल रूट होता है। हमने इस समस्या के लिए C++ प्रोग्राम पर भी चर्चा की, जिसे हम प्रोग्रामिंग भाषाओं जैसे C, Java, Python, आदि के साथ कर सकते हैं। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगेगा।


  1. C++ में दी गई लंबाई की मिश्रित संख्याओं की श्रेणी ज्ञात कीजिए

    मान लीजिए कि हमारे पास एक संख्या n है। हमें धनात्मक पूर्णांकों का परिसर ज्ञात करना है, जहाँ परिसर की सभी संख्याएँ संयुक्त हैं, और परास की लंबाई n है। यदि एक से अधिक रेंज हैं, तो किसी एक रेंज को प्रिंट करें। भाज्य संख्या वह संख्या होती है जिसमें 1 और स्वयं के अलावा कम से कम एक भाजक होता है। चूंकि परा

  1. C++ में दिए गए सूचकांकों के साथ N फाइबोनैचि संख्याओं की GCD ज्ञात कीजिए

    यहाँ हमें दिए गए सूचकांकों के साथ n फाइबोनैचि पदों की GCD ज्ञात करनी है। तो सबसे पहले हमें अधिकतम सूचकांक प्राप्त करना होगा, और फाइबोनैचि शब्द उत्पन्न करना होगा, कुछ फाइबोनैचि शब्द इस प्रकार हैं:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ….. सूचकांक शुरू होता है 0 से। तो तत्व 0th . पर सूचकांक 0 है। यदि हमें स

  1. सी ++ प्रोग्राम दी गई संख्या की रेंज के यादृच्छिक अनुक्रम उत्पन्न करने के लिए

    सबसे पहले हम रैंड () फ़ंक्शन के बारे में चर्चा करते हैं। रैंड () फ़ंक्शन C ++ की एक पूर्वनिर्धारित विधि है। इसे हेडर फाइल में घोषित किया गया है। रैंड () का उपयोग एक सीमा के भीतर यादृच्छिक संख्या उत्पन्न करने के लिए किया जाता है। यहाँ min_n यादृच्छिक संख्याओं की न्यूनतम सीमा है और max_n संख्याओं की