अंकों की संख्या और योग के रूप में एक धनात्मक संख्या दी गई है। लक्ष्य सभी d अंकों की संख्याओं को खोजना है जिनमें इनपुट योग के बराबर अंकों का योग है। अग्रणी शून्य वाली संख्याओं को d अंकों की संख्या नहीं माना जाएगा।
श्रेणियां 1 से 100 के बीच के अंक और 1 और 500 के बीच के योग हैं।
आइए उदाहरणों से समझते हैं।
उदाहरण के लिए
इनपुट - अंक =3, डिजी_सम =3
आउटपुट - n अंकों की उन संख्याओं की संख्या जिनके अंकों का योग दिए गए योग के बराबर है:6
स्पष्टीकरण - तीन अंकों की संख्याएं जिनमें अंकों का योग 3 है, वे हैं:
102, 111, 120, 201, 210, और 300.
इनपुट - अंक =4 डिजी_सम =2
आउटपुट - n अंकों की उन संख्याओं की संख्या जिनके अंकों का योग दिए गए योग के बराबर है:4
स्पष्टीकरण - चार अंकों की संख्याएं जिनमें अंकों का योग 2 है, वे हैं:
1001, 1010, 1100, और 2000.
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
इस उपागम में हम पहले d अंकों की संख्या से आगे बढ़ेंगे और पहली संख्या ज्ञात करेंगे जिसके अंकों का योग दिए गए योग के बराबर है। फिर संख्याओं को 9 से तब तक बढ़ाएँ जब तक हमें दिए गए योग से अधिक अंकों का योग न मिल जाए। एक बार इनपुट योग से अधिक अंक योग वाली संख्या मिल जाने के बाद संख्या को 1 से बढ़ाएं और इनपुट योग के रूप में योग के साथ अगली संख्या पाएं। इस प्रक्रिया को अंतिम डी अंक संख्या तक दोहराएं।
- अंकों की संख्या और अंकों के योग को इनपुट के रूप में लें।
- फ़ंक्शन डिजिट्स_सम (इंट डिजिट्स, इंट डिजी_सम) दोनों इनपुट वैल्यू लेता है और एन डिजिट नंबर्स की गिनती देता है जिनके अंकों का योग दिए गए योग के बराबर होता है।
- प्रारंभिक गणना 0 के रूप में लें।
- पहली संख्या को लेफ्ट =पाउ (10, अंक -1) के रूप में लें। और श्रेणी की अंतिम संख्या दाएँ =pow(10, अंक) - 1 (अर्थात अंक =2 के लिए 10 और 99) के रूप में।
- थोड़ी देर के लूप का उपयोग करके बाएं से दाएं ट्रैवर्स करें।
- पहला =0 और अंतिम =i लें।
- प्रत्येक i (अंतिम) के लिए, सबसे दाहिना अंक (अंतिम% 10) लें और पहले में जोड़ें। अगले पुनरावृत्ति के लिए अंतिम को 10 तक कम करें।
- अगर पहले डिजी_सम के बराबर हो जाता है, तो गिनती बढ़ाएँ और अगले पुनरावृत्ति के लिए i को 9 से अपडेट करें।
- अन्यथा 1 से बढ़ाएँ।
- सभी लूपों के अंत में हम उन संख्याओं के रूप में गिनेंगे जिनका अंकों का योग digi_sum के बराबर होगा।
- परिणाम के रूप में वापसी की गिनती।
उदाहरण
#include <bits/stdc++.h> using namespace std; int digits_sum(int digits, int digi_sum) { int count = 0; int Left = pow(10, digits - 1); int right = pow(10, digits) - 1; int i = Left; while (i <= right) { int first = 0; int last = i; while (last != 0) { first = first + last % 10; last = last / 10; } if (first == digi_sum) { count++; i = i + 9; } else { i++; } } return count; } int main() { int digits = 5; int digi_sum = 7; cout << "Count of n digit numbers whose sum of digits equals to given sum are: " << digits_sum(digits, digi_sum); return 0; }
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
आउटपुट
Count of n digit numbers whose sum of digits equals to given sum are: 5