इस समस्या में, हमें एक पूर्णांक n दिया गया है। हमारा काम मौसम की जांच करना है कि पिछली संख्या संख्या के 1 के पूरक के बराबर है।
हमारी समस्या को समझने के लिए कुछ उदाहरण लेते हैं
Input: 12 Output: No Explanation: (12)10 = (1100)2 Preceding number 11 = (1011)2 1’s complement of 12 = (0011)2 Input: 4 Output: Yes Explanation: 4 = (100)2 Preceding number 3 = (011)2 1’s complement of 12 = (011)2
इस समस्या को हल करने के लिए, हम एक सरल दृष्टिकोण का उपयोग कर सकते हैं जो पिछली संख्या और संख्या के 1 के पूरक की तुलना करके है।
यह दृष्टिकोण सरल है लेकिन स्थान और समय की खपत करता है। समय जटिलता:ओ(एन)
एक प्रभावी समाधान उस सामान्य पद्धति का उपयोग करना हो सकता है जिसे हम समस्या को हल करने के लिए चाहते हैं। यहां, केवल वह संख्या जो 2 की घात है, शर्त को पूरा करेगी यानी पिछली संख्या 1 के पूरक के बराबर है।
हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम
उदाहरण
#include <iostream> using namespace std; bool sameBits(unsigned long int n){ if ((n & (n - 1)) == 0) return true; return false; } int main(){ unsigned long int n = 64; if(sameBits(n)) cout<<"Both are the same"; else cout<<"Both aren't the same"; return 0; }
आउटपुट
Both are the same