संख्याओं की एक श्रेणी को परिभाषित करने के लिए हमें दो संख्याएँ START और END प्रदान की जाती हैं। लक्ष्य श्रेणी [START,END] में सभी संख्याओं को खोजना है जिनका कोई अंक 0 नहीं है और अंकों का योग किसी दिए गए संख्या N के बराबर है। साथ ही संख्याएं M से विभाज्य हैं
हम इसे START से END तक की संख्याओं को पार करके करेंगे और प्रत्येक संख्या के लिए हम थोड़ी देर के लूप का उपयोग करके इसके अंकों के योग की गणना करेंगे (केवल यदि सभी अंक शून्य नहीं हैं)। यदि यह योग N के बराबर है और संख्या M से विभाज्य है, तो वृद्धि की गणना।
आइए उदाहरणों से समझते हैं।
इनपुट
START=1 END=100 N=9 M=6
आउटपुट
Numbers with digit sum N and divisible by M: 4
स्पष्टीकरण
Numbers 18, 36, 54, 72 have digit sum=9 and divisible by 6. None has 0 as a digit.
इनपुट
START=100 END=200 N=10 M=2
आउटपुट
Numbers with digit sum N and divisible by M: 4
स्पष्टीकरण
Numbers 118, 136, 154, 172 have digit sum=10 and divisible by 2. None has 0 as a digit.
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम पूर्णांक START, END, N और M लेते हैं।
-
फंक्शन डिजिटसम (इंट स्टार्ट, इंट एंड, इंट एन, इंट एम) डिजिटम =एन के साथ संख्याओं की गिनती देता है और एम से विभाज्य होता है और सभी गैर-शून्य अंक होते हैं।
-
ऐसी संख्याओं के लिए प्रारंभिक चर गणना को 0 के रूप में लें।
-
परिवर्तनीय डिगसम को 0 के रूप में लें
-
परिवर्तनीय ध्वज को 0 के रूप में लें।
-
लूप के लिए उपयोग कर संख्याओं की ट्रैवर्स श्रेणी। i=शुरू से i=अंत तक
-
अब प्रत्येक संख्या num=i के लिए, यदि num%m==0 (m से विभाज्य) आगे बढ़ें।
-
लूप का उपयोग करते हुए जांचें कि क्या संख्या> 0 है। और अंक खोजें।
-
अंक =संख्या% 10। यदि अंक शून्य नहीं है तो डिगसम+=अंक की गणना करें। अगला अंक जोड़ने के लिए num=num/10 घटाएं। यदि कोई अंक 0 है, तो ध्वज =0 सेट करें और थोड़ी देर के लूप को तोड़ें
-
समय के अंत में, जांचें कि क्या ( digsum ==n और flag==1 )। अगर सही वेतन वृद्धि गिनती है।
-
अब i को m से बढ़ाएँ (m के गुणज में)।
-
सभी लूपों के अंत में काउंट की कुल संख्या होगी जो शर्त को पूरा करती है।
-
परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int digitSum(int start, int end, int n, int m){ int count = 0; int digsum = 0; int flag=0; for (int i = start; i <= end; i++){ int num=i; digsum=0; flag=0; if(num%m==0){ while(num>0){ int digit=num%10; if(digit==0){ flag=0; break; } digsum+=num%10; //sum of digits num=num/10; flag=1; } if(digsum==n && flag==1) //original number is i { count++; cout<<i<<" "; } i+=m; //now increment in multiples of m i--; // for loop has i++ } } return count; } int main(){ int START = 1; int END = 100; int N = 9; int M = 6; cout <<"Numbers with digit sum N and divisible by M: "<<digitSum(START,END,N, M); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Numbers with digit sum N and divisible by M: 4