কম্পিউটার টিউটোরিয়াল

C++-এ অঙ্কের যোগফল নির্দিষ্ট সমান n-অঙ্কের সব সংখ্যা প্রিন্ট করা

এই সমস্যায় দুটি সংখ্যা n এবং sum দেওয়া আছে। আমাদের সব n-অঙ্কের সংখ্যা প্রিন্ট করতে হবে যাদের অঙ্কের যোগফল sum-এর সমান। এই সমস্যায় শূন্য দিয়ে শুরু হওয়া সংখ্যাগুলো বিবেচনা করা হয় না।

উদাহরণ

ইনপুট: n = 2, sum = 5
আউটপুট: 14 23 32 41 50
ব্যাখ্যা: আউটপুটের সব সংখ্যার অঙ্কের যোগফল ৫।

এই সমস্যাটি সমাধানের জন্য সব n-অঙ্কের সংখ্যা খুঁজে বের করতে হবে যাদের অঙ্কের যোগফল দেওয়া sum। এর জন্য একটি ডিজিট পজিশনে সব মান ফিক্স করে এবং তার পজিশন কনজুগেট বা ডিজিট অনুযায়ী বাকি পজিশনের মানগুলোর জন্য রিকার্শিভ কল করা হবে যাতে শর্ত পূরণ হয়।

বাস্তবায়ন

#include <iostream> 
using namespace std; 

void PrintNumberWithDigitSum(int n, int sum, char* out, int index) { 
    if (index > n || sum < 0) 
        return; 
    if (index == n) { 
        if (sum == 0) { 
            out[index] = ' '; 
            cout << out << " "; 
        } 
        return; 
    } 
    for (int i = 0; i <= 9; i++) { 
        out[index] = i + '0'; 
        PrintNumberWithDigitSum(n, sum - i, out, index + 1); 
    } 
} 

void numberWithSum(int n, int sum) { 
    char out[n + 1]; 
    for (int i = 1; i <= 9; i++) { 
        out[0] = i + '0'; 
        PrintNumberWithDigitSum(n, sum - i, out, 1); 
    } 
} 

int main() { 
    int n = 3, sum = 6; 
    cout << "All " << n << " digit numbers with sum " << sum << " are :\n"; 
    numberWithSum(n, sum); 
    return 0; 
}

আউটপুট

All 3 digit numbers with sum 6 are :
105 114 123 132 141 150 204 213 222 231 240 303 312 321 330 402 411 420 501 510 600
  1. নির্দিষ্ট যোগফল দিয়ে সব ট্রিপলেট প্রিন্ট করা C++-তে

  2. নির্দিষ্ট যোগফল দিয়ে সব পেয়ার প্রিন্ট করা C++-তে

  3. যোগফল এবং GCD দিয়ে দুটি সংখ্যা বের করা (C++)

  4. C++-এ দেওয়া সংখ্যার ডিজিটগুলোর যোগফল বের করা