अंकों की संख्या के रूप में एक धनात्मक संख्या और एक योग दिया गया है। लक्ष्य उन सभी d अंकों की संख्याओं को ढूंढना है जिनके अंकों का योग इनपुट योग के बराबर है। अग्रणी शून्य वाली संख्याओं को d अंकों की संख्या नहीं माना जाएगा।
सीमाएं अंकों के बीच 1 से 100 और योग के बीच 1 और 500 हैं।
उदाहरणों से समझते हैं।
उदाहरण के लिए
इनपुट - digits = 3, digi_sum = 3
आउटपुट - दिए गए योग के बराबर अंकों के योग वाली n-अंकीय संख्याओं की संख्या: 6
व्याख्या - अंकों का योग 3 वाली तीन अंकों की संख्याएं हैं:
102, 111, 120, 201, 210, और 300।
इनपुट - digits = 4 digi_sum = 2
आउटपुट - दिए गए योग के बराबर अंकों के योग वाली n-अंकीय संख्याओं की संख्या: 4
व्याख्या - अंकों का योग 2 वाली चार अंकों की संख्याएं:
1001, 1010, 1100, और 2000।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
इस दृष्टिकोण में हम पहले d अंकों की संख्या से पार करेंगे और पहली संख्या ढूंढेंगे जिसके अंकों का योग दिए गए योग के बराबर है। फिर संख्याओं को 9 से बढ़ाएं जब तक हमें अंकों का योग दिए गए योग से अधिक न मिल जाए। एक बार दिए गए योग से अधिक अंकों का योग वाली संख्या मिल जाने पर संख्या को 1 से बढ़ाएं और इनपुट योग के साथ अगली संख्या ढूंढें। अंतिम d अंकों की संख्या तक इस प्रक्रिया को दोहराएं।
- अंकों की संख्या और अंकों के योग को इनपुट के रूप में लें।
- फ़ंक्शन digits_sum(int digits, int digi_sum) दोनों इनपुट मान लेता है और दिए गए योग के बराबर अंकों के योग वाली n-अंकीय संख्याओं की गिनती लौटाता है।
- प्रारंभिक गिनती 0 लें।
- पहली संख्या Left = pow(10, digits - 1) के रूप में लें। और रेंज की अंतिम संख्या right = pow(10, digits) - 1 के रूप में (यानी digits=2 के लिए 10 और 99)।
- while लूप का उपयोग करके left से right तक पार करें।
- first=0 और last=i लें।
- प्रत्येक i ( last ) के लिए, सबसे दायां अंक ( last % 10 ) लें और first में जोड़ें। अगले पुनरावृत्ति के लिए last को 10 से घटाएं।
- यदि first digi_sum के बराबर हो जाता है तो count बढ़ाएं और अगले पुनरावृत्ति के लिए i को 9 से अपडेट करें।
- अन्यथा i को 1 से बढ़ाएं।
- सभी लूप के अंत में हमारे पास count होगा उन संख्याओं की जिनका अंक योग digi_sum के बराबर है।
- परिणाम के रूप में count लौटाएं।
उदाहरण
#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