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

m + sum(m) + sum(sum(m)) = N সन्तুষ্ট করে এমন সংখ্যা গণনা (C++)

একটি সংখ্যা N ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হল N পর্যন্ত এমন সংখ্যা m বের করা যারা নিচের শর্ত পূরণ করে (N ≤ 10⁹):

m + sum(m) + sum(sum(m)) = N। এখানে sum(m) হল m-এর ডিজিটগুলোর যোগফল।

যদি m = 137 হয়, তবে sum(m) = 1+3+7 = 11 এবং sum(sum(m)) = sum(11) = 1+1 = 2।

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

উদাহরণ ১

ইনপুট - N = 27

আউটপুট - শর্ত পূরণকারী সংখ্যার সংখ্যা: ৩

ব্যাখ্যা - সংখ্যাগুলো:

  • 9 (9 + 9 + 9 = 27)
  • 15 (15 + (1+5) + 6 = 27)
  • 21 (21 + (2+1) + 3 = 27)

উদাহরণ ২

ইনপুট - N = 81

আউটপুট - শর্ত পূরণকারী সংখ্যার সংখ্যা: ২

ব্যাখ্যা - সংখ্যাগুলো:

  • 63 (63 + (6+3) + 9 = 81)
  • 66 (66 + (6+6) + (1+2) = 81)

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

এই পদ্ধতিতে সংখ্যাগুলোর ডিজিট সম হিসাব করে N-র সাথে তুলনা করা হয়। যদি হিসাব করা সম N-র সমান হয় তবে কাউন্ট বাড়ানো হয়।

সর্বোচ্চ সংখ্যা 10⁹ হলে ডিজিট সম সর্বোচ্চ ৮১ (৯×৯) এবং sum(sum(m))-র সর্বোচ্চ ১৬ (৭৯-এর জন্য ৭+৯)। তাই N-97 থেকে N পর্যন্ত চেক করলেই যথেষ্ট।

  • ইন্টিজার N ইনপুট নিন।
  • ফাংশন total(int num) সংখ্যার ডিজিট সম রিটার্ন করে।
  • res_total এবং res ০ দিয়ে ইনিশিয়ালাইজ করুন।
  • হোয়াইল লুপে প্রতিটি ডিজিট নিন (res = num%10), res_total-এ যোগ করুন, num/=10।
  • res_total রিটার্ন করুন।
  • ফাংশন condition(int N) N নিয়ে শর্ত পূরণকারী সংখ্যা রিটার্ন করে।
  • প্রাথমিক কাউন্ট ০।
  • i=N-97 থেকে i<=N পর্যন্ত FOR লুপ।
  • temp_1 = total(i), temp_2 = total(temp_1)।
  • temp_3 = i + temp_1 + temp_2। যদি temp_3 == N হয় তবে কাউন্ট বাড়ান।
  • লুপ শেষে কাউন্ট রিটার্ন করুন।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int total(int num) {
    int res_total = 0;
    int res = 0;
    while (num > 0) {
        res = num % 10;
        res_total = res_total + res;
        num = num / 10;
    }
    return res_total;
}

int condition(int N) {
    int count = 0;
    for (int i = N - 97; i <= N; i++) {
        int temp_1 = total(i);
        int temp_2 = total(temp_1);
        int temp_3 = i + temp_1 + temp_2;
        if (temp_3 == N) count++;
    }
    return count;
}

int main() {
    int N = 9999;
    cout << "Count of numbers satisfying m + sum(m) + sum(sum(m)) = N are: " << condition(N);
    return 0;
}

উপরের কোড রান করলে নিচের আউটপুটটি পাওয়া যাবে:

আউটপুট

Count of numbers satisfying m + sum(m) + sum(sum(m)) = N are: 2
  1. প্রথম nটি প্রাকৃতিক সংখ্যার যোগফলের যোগফল নির্ণয় করা C++-এ

  2. ফিবোনাচ্চি সংখ্যাগুলোর বর্গের যোগফল C++-এ

  3. C++ প্রোগ্রাম: প্রাকৃতিক সংখ্যাগুলোর যোগফল (Sum of Natural Numbers)

  4. C++ প্রোগ্রাম: দুটি সংখ্যা যোগ করা (Addition)