এই সমস্যায়, আমাদেরকে একটি অ্যারে একটি নম্বর দেওয়া হয়েছে। আমাদের কাজ হল নম্বরটি একটি ইভিল নম্বর নাকি অডিওস নম্বর তা পরীক্ষা করা।
ইভিল নম্বর: এটি একটি ধনাত্মক সংখ্যা যার বাইনারি প্রসারণে 1 এর জোড় সংখ্যা রয়েছে৷
উদাহরণ: 5, 17
অদ্ভুত সংখ্যা: এটি একটি ধনাত্মক সংখ্যা যার বাইনারি প্রসারণে 1 এর বিজোড় সংখ্যা রয়েছে৷
উদাহরণ : 4, 6
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট: N =65
আউটপুট: ইভিল নম্বর
ব্যাখ্যা:
65 এর বাইনারি সম্প্রসারণ :1000001
সমাধান পদ্ধতি:
সমস্যার একটি সহজ সমাধান হল সংখ্যাটির বাইনারি প্রসারণ খুঁজে বের করা এবং তারপর প্রসারণে 1 এর সংখ্যা গণনা করা। সংখ্যাটি জোড় হলে একটি অশুভ সংখ্যা অন্যথায় এটি একটি অডিয়স সংখ্যা।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#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