ধরুন আমাদের স্ট্রিং হিসাবে দুটি সংখ্যা আছে। আমাদের তাদের গুণ করতে হবে এবং ফলাফলটি স্ট্রিং-এও দিতে হবে। সুতরাং যদি সংখ্যাগুলি "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"