কম্পিউটার

C++ এ স্ট্রিং গুণ করুন


ধরুন আমাদের একটি স্ট্রিং হিসাবে দুটি সংখ্যা আছে। আমাদের তাদের গুণ করতে হবে এবং ফলাফলটিও একটি স্ট্রিংয়ে ফেরত দিতে হবে। সুতরাং সংখ্যাগুলি যদি "26" এবং "12" হয়, তাহলে ফলাফল হবে "312"

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • এক্স এবং y দুটি আর্গুমেন্ট নিলে এটি x বিভাজন y নির্দেশ করে
  • যদি x <-ইনফিনিটি এবং 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 + বাম শিফট 1 p বার
  • যদি x> 0 সত্য হয় এবং y> 0ও সত্য হয়, তাহলে উত্তর দিন, অন্যথায় (– ans) ফেরত দিন

উদাহরণ(C++)

আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −

#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");
}

ইনপুট

"26"
"12"

আউটপুট

"312"

  1. C++ এ কেস-সংবেদনশীল স্ট্রিং তুলনা

  2. দুটি স্ট্রিংকে সংযুক্ত করার জন্য C++ প্রোগ্রাম

  3. C++ এ একটি স্ট্রিংকে টোকেনাইজ করবেন?

  4. পাইথনে ইউনিকোড স্ট্রিং