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

C++ में दी गई डिजिटल रूट वाली रेंज में संख्याएं ढूंढना


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

इनपुट: l = 13, r = 25, X = 4 आउटपुट: 2 व्याख्या: रेंज (13,25) में डिजिटल रूट 4 वाली संख्याएं 13 और 22 हैं। इनपुट: l = 11, r = 57 आउटपुट: 6

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

सरल दृष्टिकोण

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

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

रेंज में डिजिटल रूट X वाली संख्याएं खोजने के लिए, इसलिए हमें रेंज में हर संख्या के अंकों के योग की जांच करनी होगी कि क्या यह K के बराबर है और अंकों का योग हमेशा num % नौ के बराबर होता है और यह नौ होता है यदि शेषफल 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;     // रेंज में सभी संख्याओं को गिनना     int total = r - l + 1;     // संख्याओं को अधिकतम 9 के समूहों में विभाजित करना     int groups = total/ 9;     // चूंकि N समूहों के लिए N संख्याएं होंगी जिनका मोड्यूलो 9 X के बराबर होगा।     int result = groups;     // बची हुई सभी संख्याओं की जांच करना     int left_out = total % 9;     // प्रत्येक बची हुई संख्या को अलग से शर्त के लिए चेक करना।     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

निष्कर्ष

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

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

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

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

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

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

  1. - C++ प्रोग्राम दी गई रेंज के नंबर्स का रैंडमाइज़्ड सीक्वेंस जनरेट करने के लिए

    rand() फंक्शन C++ का एक पूर्वनिर्धारित मेथड है। यह <stdlib.h> हेडर फाइल में घोषित है। rand() एक रेंज के भीतर रैंडम नंबर उत्पन्न करने के लिए उपयोग किया जाता है। एल्गोरिदम max_n = 100, min_n = 1 इनिशियलाइज़ करें। The random number is: प्रिंट करें। 10 बार लूप करें: new_n = (rand() % (max_