ধরুন আমাদের দুটি পূর্ণসংখ্যা 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