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