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

n ডিজিটের সংখ্যা যাদের ডিজিট সম দেওয়া সমের সমান (C++)

একটি পজিটিভ নম্বর ডিজিট সংখ্যা হিসেবে এবং একটি সম দেওয়া আছে। লক্ষ্য হল d ডিজিটের যেসব সংখ্যার ডিজিট সম ইনপুট সমের সমান, তাদের সংখ্যা বের করা। লিডিং জিরো থাকা নম্বরগুলো d-ডিজিট নম্বর হিসেবে গণ্য হবে না।

রেঞ্জ: ডিজিট ১ থেকে ১০০, সম ১ থেকে ৫০০।

উদাহরণ দিয়ে বোঝা যাক

উদাহরণ ১

ইনপুট - digits = 3, digi_sum = 3

আউটপুট - n ডিজিটের সংখ্যা যাদের ডিজিট সম দেওয়া সমের সমান: ৬

ব্যাখ্যা - ৩-ডিজিট সংখ্যা যাদের ডিজিট সম ৩: ১০২, ১১১, ১২০, ২০১, ২১০, ৩০০।

উদাহরণ ২

ইনপুট - digits = 4, digi_sum = 2

আউটপুট - n ডিজিটের সংখ্যা যাদের ডিজিট সম দেওয়া সমের সমান: ৪

ব্যাখ্যা - ৪-ডিজিট সংখ্যা যাদের ডিজিট সম ২: ১০০১, ১০১০, ১১০০, ২০০০।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

এই পদ্ধতিতে প্রথম d-ডিজিট নম্বর থেকে ট্রাভার্স শুরু করে প্রথমে যে নম্বরের ডিজিট সম ইনপুট সমের সমান, সেটি বের করা হয়। তারপর ৯ দিয়ে ইনক্রিমেন্ট করা হয় যতক্ষণ না ডিজিট সম ইনপুট সমের চেয়ে বড় হয়। একবার বড় হলে ১ দিয়ে ইনক্রিমেন্ট করে আবার সমান সম والা নম্বর খুঁজা হয়। এই প্রক্রিয়া শেষ d-ডিজিট নম্বর পর্যন্ত চলে।

  • ডিজিট সংখ্যা এবং ডিজিট সম ইনপুট নিন।
  • ফাংশন digits_sum(int digits, int digi_sum) ইনপুট নিতে এবং ফলাফল রিটার্ন করে।
  • প্রাথমিক কাউন্ট ০।
  • প্রথম নম্বর Left = pow(10, digits-1), শেষ নম্বর right = pow(10, digits)-1।
  • i = Left থেকে right পর্যন্ত হোয়াইল লুপ।
  • প্রতিটি i-র জন্য first=0, last=i।
  • হোয়াইল লুপে last != 0: first += last%10, last/=10।
  • যদি first == digi_sum হয় তবে কাউন্ট বাড়ান এবং i += 9।
  • অন্যথায় i++।
  • সব লুপ শেষে কাউন্ট রিটার্ন করুন।

উদাহরণ কোড

#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++-এ নির্দিষ্ট রেঞ্জে ফ্যাক্টোরিয়াল সংখ্যা গণনা

  2. C++-এ অদ্বিতীয় ডিজিটযুক্ত সংখ্যা গণনা

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

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