এই সমস্যায়, আমাদের দুটি পূর্ণসংখ্যার মান দেওয়া হয়েছে a এবং b। এবং আমাদের কাজ হল a থেকে b এর bitwise এবং (&) রেঞ্জ খুঁজে বের করা . এর মানে আমাদের a &a+1 &a+2 &… b-1 &b-এর মান খুঁজে বের করতে হবে।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
ইনপুট − a =3 , b =8
আউটপুট − 0
ব্যাখ্যা − 3 এবং 4 এবং 5 এবং 6 এবং 7 এবং 8 =0
সমস্যা সমাধানের জন্য, একটি সহজ সমাধান হল a থেকে শুরু করে বিটওয়াইজ এবং সমস্ত সংখ্যার একটি থেকে b বাড়িয়ে।
আরও কার্যকর সমাধান,
এটি একটি আরও কার্যকর সমাধান, এটি −
ব্যবহার করে করা যেতে পারেপদক্ষেপ1 − b এর LSB ফ্লিপ করুন।
ধাপ ২ − সংখ্যাটি a এবং b এর সাথে তুলনা করুন, এটি পরিসরে আছে কিনা তা পরীক্ষা করুন,
ধাপ 2.1৷ − যদি সংখ্যাটি একটি ফ্লিপের চেয়ে বেশি হয় তবে এর LSB লাভ।
ধাপ 2.2৷ - যদি এটি একটি থেকে বড় না হয় তাহলে সংখ্যা =ফলাফল৷
৷এখন, চলুন কাজ করার ক্ষেত্রে উপরের অ্যালগরিদমটি দেখুন −
উদাহরণ − a =3 এবং b =8।
সমাধান −
পদক্ষেপ1 − b =8 (1000), ফ্লিপিং LSB যা সংখ্যার মধ্যে একমাত্র। সংখ্যাটি হয়ে যায় 0000 অর্থাৎ 0
ধাপ ২ − 0 হল 3 থেকে কম, 0 হল ফলাফল৷
উদাহরণ
এখন, সমস্যা সমাধানের কোডটি দেখি,
#include <stdio.h> int main(){ long a, b; a = 3; b = 8; do{ b -= (b & -b); }while(a < b); printf("%li", b); }
আউটপুট
0