ধরুন আমাদের স্ট্রিং হিসাবে দুটি সংখ্যা আছে। আমাদের তাদের গুণ করতে হবে এবং ফলাফলটি স্ট্রিং-এও দিতে হবে। সুতরাং যদি সংখ্যাগুলি "28" এবং "25" হয়, তাহলে ফলাফল হবে "700"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
x এবং y দুটি আর্গুমেন্ট নিলে এটি x ভাগ করে y
নির্দেশ করে -
যদি x <−Infinity এবং y =1 হয়, তাহলে ইনফিনিটি ফেরত দিন
-
a :=|x|, b :=|y| এবং উত্তর :=0
-
যখন a − b>=0
-
p :=0
-
যখন a − (বামে স্থানান্তরিত b (বামে স্থানান্তরিত 1 p বার))>=0
-
p :=p + 1
-
-
a :=a − (বাম শিফট b, p বার)
-
ans :=ans + বাম শিফট 1 p বার
-
-
যদি x> 0 সত্য হয় এবং y> 0ও সত্য হয়, তাহলে উত্তর দিন, অন্যথায় ফেরত দিন (− ans)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string multiply(string num1, string num2);
};
string Solution::multiply(string nums1, string nums2) {
int n = nums1.size();
int m = nums2.size();
string ans(n + m, '0');
for(int i = n - 1; i>=0; i−−){
for(int j = m - 1; j >= 0; j−−){
int p = (nums1[i] − '0') * (nums2[j] − '0') + (ans[i + j +
1] − '0');
ans[i+j+1] = p % 10 + '0';
ans[i+j] += p / 10 ;
}
}
for(int i = 0; i < m + n; i++){
if(ans[i] !='0')return ans.substr(i);
}
return "0";
}
main(){
Solution ob;
cout << ob.multiply("28", "25");
} ইনপুট
"28", "25"
আউটপুট
"700"