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

C++-এ ইবিল নাম্বার (Evil Number) উদাহরণসহ

এই সমস্যায়, আমাদের একটি অ্যারে এবং একটি সংখ্যা N দেওয়া হয়েছে। আমাদের কাজ হলো চেক করা যে সংখ্যাটি ইবিল নাম্বার (Evil Number) নাকি ওডিয়াস নাম্বার (Odious Number)।

ইবিল নাম্বার: এটি একটি পজিটিভ সংখ্যা যার বাইনারি এক্সপ্যানশনে জোড় সংখ্যক ১ থাকে।

উদাহরণ: 5, 17

ওডিয়াস নাম্বার: এটি একটি পজিটিভ সংখ্যা যার বাইনারি এক্সপ্যানশনে বিজোড় সংখ্যক ১ থাকে।

উদাহরণ: 4, 6

উদাহরণ দিয়ে সমস্যাটি বোঝা যাক

ইনপুট: N = 65

আউটপুট: Evil Number

ব্যাখ্যা:

65-এর বাইনারি এক্সপ্যানশন: 1000001

সমাধানের পদ্ধতি

এই সমস্যার একটি সহজ সমাধান হলো সংখ্যাটির বাইনারি এক্সপ্যানশন বের করে সেটিতে ১-এর সংখ্যা গণনা করা। যদি কাউন্ট জোড় হয় তবে সংখ্যাটি ইবিল নাম্বার অন্যথায় ওডিয়াস নাম্বার।

সমাধানটি ব্যাখ্যা করে প্রোগ্রাম

#include <iostream>
using namespace std;

int isEvilNumber(int n) {
    int count = 0;
    while (n != 0) {
        int r = n % 2;
        if (r == 1)
            count++;
        n = n / 2;
    }
    if (count % 2 == 0)
        return 1;
    else
        return 0;
}

int main(void) {
    int num = 2049;
    if (isEvilNumber(num))
        cout << "The number " << num << " is an Evil Number";
    else
        cout << "The number " << num << " is an Odious Number";
    return 0;
}

আউটপুট

The number 2049 is an Evil Number
  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  3. C++-এ এক্সপ্রেশন ট্রি (Expression Tree) উদাহরণসহ

  4. C++ প্রোগ্রাম: সংখ্যা b-বেসে ১ দিয়ে শুরু হয় কিনা চেক