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

C++-এ একটি সংখ্যা দিয়ে गये ডিজিট সংখ্যক যেকোনো বেসে রিপ্রেজেন্ট করা যায় কিনা চেক করা

মনে করুন একটি সংখ্যা n এবং ডিজিট সংখ্যা d আছে। আমাদের চেক করতে হবে n কি d ডিজিট সংখ্যা হিসেবে যেকোনো বেস ২ থেকে ৩২-এ রিপ্রেজেন্ট করা যায়। ধরুন n = 8 এবং d = 4, তবে এটি বাইনারিয়ে 1000 হিসেবে রিপ্রেজেন্ট করা যায়, এখানে d = 4।

আইডিয়া হল সব বেস একে একে ২ থেকে ৩২ পর্যন্ত চেক করা। বেস চেক করার ধাপগুলো:

  • যদি সংখ্যা বেস থেকে ছোট হয় এবং ডিজিট ১ হয়, তবে true রিটার্ন করুন
  • যদি ডিজিট ১-এর চেয়ে বেশি হয় এবং সংখ্যা বেস থেকে বড় বা সমান হয়, তবে সংখ্যা থেকে লাস্ট ডিজিট বাদ দিন num/base করে, ডিজিট সংখ্যা কমান, রিকার্সিভলি আবার চেক করুন
  • অন্যথায় false রিটার্ন করুন

উদাহরণ কোড

#include <iostream>
using namespace std;

bool isRepresentedInDDigits(int num, int d, int base) {
    if (d == 1 && num < base)
        return true;
    if (d > 1 && num >= base)
        return isRepresentedInDDigits(num / base, --d, base);
    return false;
}

bool checkNumber(int num, int d) {
    // সব বেস একে একে চেক করুন
    for (int base = 2; base <= 32; base++)
        if (isRepresentedInDDigits(num, d, base))
            return true;
    return false;
}

int main() {
    int num = 8;
    int dig = 2;
    if (checkNumber(num, dig))
        cout << "Can be represented";
    else
        cout << "Can not be represented";
    return 0;
}

আউটপুট

Can be represented
  1. C++ প্রোগ্রাম: সংখ্যা ২টি ট্রায়্যাঙ্গুলার নাম্বারের যোগফল কিনা চেক

  2. C++ প্রোগ্রাম: সংখ্যা a^b আকারে এক্সপ্রেস করা যায় কিনা চেক

  3. C++ প্রোগ্রাম: সংখ্যা 2ˣ + 2ʸ আকারে এক্সপ্রেস করা যায় কিনা চেক

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