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

ऐसी संख्याएं खोजें जिनके अंकों का योग दिए गए मान के बराबर हो


एक संख्या n और एक मान दिया गया है। हमें सभी n अंकों की संख्याएं ढूंढनी हैं, जहां सभी n अंकों का योग s दिए गए मान के समान है। यहां 0 को अंक नहीं गिना जाता।

संख्या n 1 से 100 की सीमा में होनी चाहिए, और मान 1 से 500 की सीमा में होना चाहिए।

इनपुट और आउटपुट

इनपुट: यह एल्गोरिदम अंकों की संख्या, और योग मान लेता है। मान लें अंक गणना 3 है। और योग 15 है। आउटपुट: उन 3-अंकीय संख्याओं की संख्या प्रदर्शित करें जिनका योग 15 है। परिणाम 69 है। (ऐसी 69 अलग-अलग 3-अंकीय संख्याएं हैं जिनका योग 15 है)

एल्गोरिदम

count(digit, sum)

इनपुट: संख्याओं के अंक, दिया गया मान।

आउटपुट: गिनें कि कितनी संख्याएं हैं।

शुरू     यदि digit = 0, तो       वापस करें सच जब sum = 0     यदि memTable[digit, sum] खाली नहीं है, तो       वापस करें memTable[digit, sum]     answer := 0     i := 0 से 9 तक करें       यदि sum – i >= 0, तो         answer := answer + count(digit – 1, sum - i)       किया     वापस करें memTable[digit, sum] := answer अंत

numberCount(digit, sum)

इनपुट: संख्या के अंक, दिया गया मान।

आउटपुट: उस प्रकार की संख्या कितनी है।

शुरू     memTable परिभाषित करें और सभी स्थान खाली करें     res := 0     i := 1 से 9 तक, करें       यदि sum – i >= 0, तो         res := res + count(digit – 1, sum - i)       किया     परिणाम वापस करें अंत

उदाहरण

#include<iostream> #define ROW 101 #define COL 501 using namespace std; unsigned long long int memTable[ROW][COL]; unsigned long long int count(int digit, int sum) {     if (digit == 0)       //0 अंक की संख्या के लिए जांचें कि योग 0 है या नहीं       return sum == 0;     if (memTable[digit][sum] != -1)       //जब उपसमस्या ने परिणाम ढूंढ लिया हो, तो इसे वापस करें       return memTable[digit][sum];     unsigned long long int ans = 0;       //पहली बार उत्तर को 0 सेट करें     for (int i=0; i<10; i++)       //प्रत्येक अंक के लिए गिनें और उससे शुरू होने वाली संख्याएं खोजें       if (sum-i >= 0)         ans += count(digit-1, sum-i);     return memTable[digit][sum] = ans; } unsigned long long int numberCount(int digit, int sum) {     for(int i = 0; i= 0)         result += count(digit-1, sum-i);     return result; } int main() {     int digit, sum;     cout << "Enter digit count: "; cin >> digit;     cout << "Enter Sum: "; cin >> sum;     cout << "Number of values: " << numberCount(digit, sum); }

आउटपुट

Enter digit count: 3 Enter Sum: 15 Number of values: 69

  1. - C++ में लंबाई k के सबस्ट्रिंग्स जिनके ASCII वैल्यू का योग k से विभाज्य हो

    यहां हम एक और समस्या देखेंगे, जहां एक स्ट्रिंग और एक इंटीजर मान k दिया गया है। हमें लंबाई k के उन सबस्ट्रिंग्स की संख्या ढूंढनी है जिनके कैरेक्टर्स के ASCII वैल्यू का योग k से विभाज्य हो।मान लीजिए एक स्ट्रिंग है BCGABC। और k का मान 3 है। यहां स्ट्रिंग BCG का ASCII योग 300 है, ABC का ASCII योग 294 है

  1. - Python में दिए गए योग वाले कुछ संख्याओं का गुणनफल खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या n है, हमें दो या अधिक संख्याएं ढूंढनी हैं जैसे कि उनका योग n के बराबर हो, और इन संख्याओं का गुणनफल अधिकतम हो, हमें गुणनफल ढूंढना है। तो, यदि इनपुट n = 12 जैसा है, तो आउटपुट 81 होगा, क्योंकि 3 + 3 + 3 + 3 = 12 और 3 * 3 * 3 * 3 = 81। इसे हल करने के लिए, हम इन चरणों का

  1. - पायथन में अंकों का योग तब तक खोजने का प्रोग्राम जब तक यह एक अंक की संख्या न बन जाए

    मान लीजिए हमारे पास एक धनात्मक संख्या n है, हम इसके सभी अंकों को जोड़कर एक नई संख्या प्राप्त करेंगे। अब इस ऑपरेशन को तब तक दोहराएं जब तक यह 10 से कम न हो जाए। उदाहरण के लिए, यदि इनपुट 9625 है, तो आउटपुट 4 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे (रिकर्सिव/इटरेटिव): solve(n) मेथड परिभा