ধরুন আমাদের একটি সংখ্যা n, এবং সংখ্যার সংখ্যা d। 2 থেকে 32 পর্যন্ত যেকোনো বেসে n সংখ্যাটিকে d সংখ্যার সংখ্যা হিসাবে উপস্থাপন করা যায় কিনা তা আমাদের পরীক্ষা করতে হবে। ধরুন n সংখ্যাটি 8 এবং d =4, তাহলে এটিকে বাইনারিতে 1000 হিসাবে উপস্থাপন করা যেতে পারে, এখানে d হল 4 .
ধারণাটি হল 2 থেকে 32 পর্যন্ত সমস্ত বেস একে একে চেক করা। বেস চেক করতে আমরা এই ধাপগুলি অনুসরণ করতে পারি।
- যদি সংখ্যাটি ভিত্তির চেয়ে ছোট হয়, এবং সংখ্যা 1 হয়, তাহলে সত্য ফেরত দিন
- যদি সংখ্যা একের বেশি হয় এবং সংখ্যাটি ভিত্তির চেয়ে বেশি হয়, তাহলে সংখ্যা/বেস করে সংখ্যা থেকে শেষ অঙ্কটি সরিয়ে ফেলুন, এইভাবে সংখ্যার সংখ্যা কমিয়ে দিন, তারপরে বারবার পুনরাবৃত্তি করুন৷
- অন্যথায় মিথ্যা ফেরত দিন।
উদাহরণ
#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) {
// Check for all bases one by one
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";
} আউটপুট
Can be represented