০ থেকে N পর্যন্ত যেসব সংখ্যার বিটওয়াইজ AND N-এর সাথে N বা ০ হয়, সেগুলো প্রিন্ট করতে হবে। আসলে N-এর সাবমাস্ক (submask) গুলো প্রিন্ট করা হয়।
উদাহরণ: N=4 → আউটপুট: 0 4 (কারণ 0&4=0, 1&4=0, 2&4=0, 3&4=0, 4&4=4)। N=6 → আউটপুট: 0, 2, 4, 6।
N থেকে ১ পর্যন্ত লুপ চলান, কিন্তু আপডেট: i = (i-1) & N। এটি শুধু সাবমাস্ক গুলো দিয়ে ঘুরে।
- i = N থেকে শুরু করে i > 0 পর্যন্ত i = (i-1) & N দিয়ে ডিক্রিমেন্ট।
- প্রতি i প্রিন্ট করুন।
- শেষে ০ প্রিন্ট করুন।
#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