Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คูณสตริงใน C++


สมมติว่าเรามีตัวเลขสองตัวเป็นสตริง เราต้องคูณมันและส่งคืนผลลัพธ์เป็นสตริงด้วย ดังนั้นหากตัวเลขเป็น “26” และ “12” ผลลัพธ์จะเป็น “312”

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ใช้สองอาร์กิวเมนต์ 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 ไม่เช่นนั้นให้คืนค่า (– 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"