ধরুন আমাদের দুটি পূর্ণসংখ্যা a এবং b আছে। আমাদের কাজ হল এই দুটি পূর্ণসংখ্যার যোগফল বের করা। একটি সীমাবদ্ধতা হল, আমরা কোন অপারেটর যেমন + বা - ব্যবহার করতে পারি না। সুতরাং a =5 এবং b =7 হলে, ফলাফল হবে 12।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- সমাধানের জন্য আমরা বিটওয়াইজ লজিক্যাল অপারেটর ব্যবহার করব
- যদি b =0 হয়, তাহলে a ফেরত দিন
- অন্যথায়, ফলাফলটি একবার বাম স্থানান্তরের পরে একটি XOR b এবং a AND b প্রদান করে যোগফল ফাংশনটি পুনরাবৃত্তিমূলকভাবে ব্যবহার করুন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#include <iostream> using namespace std; class Solution { public: int getSum(int a, int b) { return b == 0?a:getSum(a^b, (unsigned int)(a&b)<<1); } }; main(){ Solution ob; cout<<ob.getSum(5,7)<<endl; }
ইনপুট
a = 5 b = 7
আউটপুট
12