संख्याओं की श्रेणी को परिभाषित करने के लिए हमें दो संख्याएं START और END प्रदान की जाती हैं। लक्ष्य [START,END] श्रेणी में उन सभी संख्याओं को खोजना है जिनके अंकों का योग दी गई संख्या Y के बराबर है।
हम इसे START से END तक की संख्याओं को पार करके करेंगे और प्रत्येक संख्या के लिए हम थोड़ी देर के लूप का उपयोग करके इसके अंकों का योग गिनेंगे। यदि यह योग Y के बराबर है, तो वेतन वृद्धि की गणना करें।
आइए उदाहरणों से समझते हैं।
इनपुट
START=10 END=20 Y=4
आउटपुट
Numbers such that digit sum is equal to Y: 1
स्पष्टीकरण
Number 13 has digit sum equal to 4.
इनपुट
START=10 END=50 Y=5
आउटपुट
Numbers such that digit sum is equal to Y: 5
स्पष्टीकरण
Numbers 14, 23, 32, 41 and 50 have digit sum 5.
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम पूर्णांक START, END, Y लेते हैं।
-
फंक्शन डिजिटसम (इंट स्टार्ट, इंट एंड, इंट वाई) डिजिटम =वाई के साथ संख्याओं की गिनती देता है
-
ऐसी संख्याओं के लिए प्रारंभिक चर गणना को 0 के रूप में लें।
-
परिवर्तनीय डिगसम को 0 के रूप में लें
-
लूप के लिए उपयोग कर संख्याओं की ट्रैवर्स श्रेणी। i=शुरू से i=अंत तक
-
अब प्रत्येक संख्या के लिए num=i, जबकि लूप का उपयोग करके जांचें कि क्या संख्या>0 है।
-
डिगसम+=संख्या%10 की गणना करें। अगला अंक जोड़ने के लिए num=num/10 कम करें।
-
समय के अंत में, जांचें कि क्या ( डिगसम ==डी )। अगर सही वेतन वृद्धि गिनती है।
-
सभी लूपों के अंत में काउंट की कुल संख्या होगी जो शर्त को पूरा करती है।
-
परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int digitSum(int start, int end, int y){ int count = 0; int digsum = 0; for (int i = start; i <= end; i++){ int num=i; digsum=0; while(num>0){ digsum+=num%10; //sum of digits num=num/10; } if(digsum==y) //original number is i{ count++; //cout<<i<<" "; } } return count; } int main(){ int START = 100; int END = 1000; int Y = 5; cout <<"Numbers such that digit sum is equal to Y: "<<digitSum(START,END,Y); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Numbers such that digit sum is equal to Y: 15