इस समस्या में, हमें एक सरणी एक संख्या N दी जाती है। हमारा कार्य यह जांचना है कि संख्या एक ईविल नंबर है या ओडिअस नंबर।
बुराई संख्या: यह एक धनात्मक संख्या है जिसके द्विआधारी विस्तार में 1 की सम संख्या होती है।
उदाहरण: 5, 17
ओडियस नंबर: यह एक धनात्मक संख्या है जिसके द्विआधारी विस्तार में विषम संख्या 1 है।
उदाहरण: 4, 6
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: एन =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