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

C++-এ আঙ্কিক যোগফল N হয় এমন M-তম সংখ্যা বের করুন

দুটি পজিটিভ সংখ্যা N এবং M দেওয়া আছে। এমন M-তম সংখ্যা বের করতে হবে যেটির আঙ্কিক যোগফল (ডিজিট সম) বারবার করলে একদিকের সংখ্যা N হয়।

উদাহরণ

ইনপুট: N = 4, M = 6 → আউটপুট: 49

চেক: ৪৯ → ৪+৯=১৩ → ১+৩=৪ ✓

প্যাটার্ন ও সূত্র

যেসব সংখ্যার রিপিটেড ডিজিট সম N হয়, সেগুলো 9-এর গুণিতক প্লাস N হয়।

সূত্র: M-th number = (M-1) × 9 + N

ব্যাখ্যা

  • N=4 এর জন্য সিকোয়েন্স: ৪, ১৩, ২২, ৩১, ৪০, ৪৯, ৫৮, ৬৭, ৭৬, ৮৫, ৯৪, ১০৩, ...
  • প্রতিটি পরের সংখ্যা = আগের + ৯।
  • কারণ: ৯ যোগ করলে ডিজিট সম অপরিবর্তিত থাকে (মডুলো ৯)।

C++ প্রোগ্রাম

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

int main() {
    int n = 4, m = 6;
    int mNumber = (m - 1) * 9 + n;
    cout << m << "-th number whose repeated sum of digits of a number is " << n << " is " << mNumber;
    return 0;
}

আউটপুট

6-th number whose repeated sum of digits of a number is 4 is 49

মূল পয়েন্ট

  • O(1) টাইম ও স্পেস — কোনো লুপ বা রিকার্শন লাগে না।
  • ডিজিটাল রুট (Digital Root) কনসেপ্ট: dr(x) = 1 + (x-1)%9 (x>0)।
  • N ১ থেকে ৯ পর্যন্ত হতে হবে (ডিজিটাল রুটের রেঞ্জ)।
  • N=9 হলে সিকোয়েন্স: ৯, ১৮, ২৭, ৩৬... (৯-এর গুণিতক) → সূত্র: (M-1)*9 + 9 = M*9।

জেনেরিক ফাংশন

int findMthNumber(int N, int M) {
    if (N < 1 || N > 9) return -1; // Invalid digital root
    return (M - 1) * 9 + N;
}
  1. সংখ্যার সম ও বিষম স্থানের অঙ্কের যোগফল বের করা C++-তে

  2. সি++ প্রোগ্রাম: D দিয়ে বিভাজ্য N অঙ্কের সংখ্যা খুঁজে বের করা

  3. C++ ব্যবহার করে একটি সংখ্যার বিজোড় মুল ফ্যাক্টরের যোগফল বের করা

  4. C++ প্রোগ্রাম: সংখ্যার ডিজিট যোগফল একক ডিজিট হয় পর্যন্ত