এই সমস্যায়, আমাদের একটি সংখ্যা দেওয়া আছে এবং আমাদের কাজ হল চেক করা যে সংখ্যাটি উডল নম্বর কিনা।
উডল নম্বর হল একটি বিশেষ ধরনের সংখ্যা যার রূপ হল,
Wn = n.2n -1
প্রথম ৫টি উডল নম্বর হল 1, 7, 23, 63, 159
একটি উদাহরণ নিয়ে সমস্যাটি বুঝি,
ইনপুট
X = 159
আউটপুট
হ্যাঁ
এই সমস্যাটি সমাধান করতে, আমরা সংখ্যাটি পর্যবেক্ষণ করব, যদি সংখ্যাটি জোড় হয় তবে এটি উডল হতে পারবে না এবং তারপর সংখ্যাটি চেক করব। চেক করতে, সংখ্যাটির সাথে ১ যোগ করব এবং রিকার্সিভলি ২ দিয়ে ভাগ করব। প্রতিটি ভাগের পর যে সংখ্যা ভাগ হলো সেটি গণনা করব। এবং প্রতিটি পয়েন্টে চেক করব যে গণনাটি সংখ্যার সাথে সমান কিনা।
আমাদের সমাধানের বাস্তবায়ন দেখানোর প্রোগ্রাম,
উদাহরণ
#include <iostream> using namespace std; bool isWoodallNumber(int x){ if (x % 2 == 0) return false; if (x == 1) return true; x+= 1; int p = 0; while(x%2 == 0){ x = x/2; p++; if (p == x) return true; } return false; } int main() { int x = 1424; cout<<x; (isWoodallNumber(x))?cout<<" একটি উডল নম্বর":cout<<" একটি উডল নম্বর নয়"; return 0; }
আউটপুট
1424 একটি উডল নম্বর নয়