किसी संख्या का डिजिटल रूट उसके अंकों के योग से निकाला जा सकता है; यदि योग एक अंक का है, तो वह डिजिटल रूट है। इस ट्यूटोरियल में, हम एक समस्या पर चर्चा करेंगे जहां हमें संख्याओं की एक रेंज और एक पूर्णांक 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 आदि प्रोग्रामिंग भाषाओं में कर सकते हैं। आशा है आपको यह ट्यूटोरियल उपयोगी लगा होगा।