বিটওয়াইজ অপারেটর ব্যবহার করে দুটি সংখ্যা গুণফল বের করা যায়। left shift (<<) গুণের জন্য এবং right shift (>>) ভাগের জন্য ব্যবহার হয়।
সূত্র: x * y = (x * 2) * (y / 2) যদি y জোড় হয়, অন্যথায় x * y = (x * 2) * (y / 2) + x।
অ্যালগরিদম
- দুটি সংখ্যা ইনিশিয়ালাইজ করুন।
- যখন
y > 0: - যদি y বিজোড় (
y & 1), তবেresult += x। x <<= 1(x দ্বিগুণ)।y >>= 1(y অর্ধেক)।- ফলাফল ফেরত দিন।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
int multiplyTwoNumbers(int a, int b) {
int result = 0;
while (b > 0) {
if (b & 1) result += a;
a <<= 1;
b >>= 1;
}
return result;
}
int main() {
cout << multiplyTwoNumbers(75, 4) << endl; // 300
cout << multiplyTwoNumbers(90, 9) << endl; // 810
cout << multiplyTwoNumbers(83, 66) << endl; // 5478
return 0;
}
আউটপুট
300 810 5478