ধরুন আমাদের একটি সংখ্যা 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