Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में दिए गए योग के बराबर अंकों के योग वाली n-अंकीय संख्याओं की गिनती


अंकों की संख्या के रूप में एक धनात्मक संख्या और एक योग दिया गया है। लक्ष्य उन सभी 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

  1. - C++ में अद्वितीय अंकों वाली संख्याओं की गिनती

    मान लीजिए हमारे पास एक गैर-ऋणात्मक पूर्णांक n है। हमें उन सभी संख्याओं को गिनना है जिनके अंक अद्वितीय हैं x, जहां x रेंज 0 से 10^n में है।उदाहरण के लिए, यदि संख्या n = 2 है, तो परिणाम 91 होगा, क्योंकि हम 0 से 100 तक 11, 22, 33, 44, 55, 66, 77, 88, 99 के बिना संख्याएं ढूंढना चाहते हैं।इसे हल करने के

  1. - C++ में दिए गए योग के बराबर अंकों के योग वाले सभी n-अंकीय संख्याएं प्रिंट करना

    इस समस्या में, हमें दो संख्याएं n और sum दी गई हैं। हमें वे सभी n अंकों की संख्याएं प्रिंट करनी हैं जिनका योग दिए गए sum के बराबर हो। इस समस्या में, अग्रणी शून्य वाली संख्याओं पर विचार नहीं किया जाता है। उदाहरण Input: n = 2, sum = 5 Output: 14 23 32 41 50 Explanation: सभी संख्याओं में अंकों का

  1. - C++ में योग और GCD दिए जाने पर दो संख्याएं ढूंढना

    हमारे पास दो संख्याओं a और b का योग और GCD है। हमें दोनों संख्याएं a और b ढूंढनी हैं। यदि यह संभव नहीं है, तो -1 लौटाएं। मान लीजिए योग 6 है और GCD 2 है, तो संख्याएं 4 और 2 हैं।दृष्टिकोण ऐसा है, चूंकि GCD दिया गया है, तो यह ज्ञात है कि संख्याएं इसके गुणक होंगी। अब निम्न चरण हैंयदि हम पहली संख्या को G