इस समस्या में, हमें 0 से n तक की उन सभी संख्याओं को प्रिंट करना है जो n के बाइनरी के बिटवाइज AND हैं।
आइए एक उदाहरण लेकर अवधारणा को बेहतर ढंग से समझते हैं।
Input : N = 4. Output : 0 4 Explanation : 0 & 4 = 0 1 & 4 = 0 2 & 4 = 0 3 & 4 = 0 4 & 4 = 4. Input : N = 6 Output : 0, 2, 4, 6
इस समस्या को हल करने के लिए, हमें बिटवाइज ऑपरेटर्स का उपयोग करने की आवश्यकता है। इनका उपयोग करके हम आवश्यक उपसमुच्चय ढूंढेंगे। हम n से 1 तक एक अलग अपडेट फ़ंक्शन का उपयोग करके पीछे की ओर पुनरावृति करेंगे जो केवल उन मानों का उपयोग करेगा जो n के साथ कुछ AND के AND ऑपरेशन के आउटपुट हैं। ऑपरेशन होगा i = (i-1) & N.
इस विचार के आधार पर आइए एक एल्गोरिदम बनाते हैं -
एल्गोरिदम
चरण 1 : n से 1 तक घटते ऑपरेटर i = (i-1) & n का उपयोग करके लूप करें चरण 2 : i प्रिंट करें। चरण 3 : बाहर निकलें।
उदाहरण
उपरोक्त एल्गोरिदम का प्रोग्राम कार्यान्वयन -
#include <iostream> using namespace std; int main() { int n = 11; for (int i = n; i > 0; i = (i - 1) & n) cout << i << " "; cout << 0; return 0; } आउटपुट
11 10 9 8 3 2 1 0