Computer >> Máy Tính >  >> Lập trình >> Python

Nhân chuỗi trong C ++


Giả sử chúng ta có hai số dưới dạng một chuỗi. Chúng ta phải nhân chúng và trả về kết quả cũng trong một chuỗi. Vì vậy, nếu các số là “26” và “12”, thì kết quả sẽ là “312”

Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau -

  • Lấy hai đối số x và y, nó chỉ ra x chia cho y
  • nếu x <-Infinity và y =1, thì trả về vô cùng
  • a:=| x |, b:=| y | và ans:=0
  • while a - b> =0
    • p:=0
    • while a - (dịch sang trái b (dịch sang trái 1 p lần))> =0
      • p:=p + 1
    • a:=a - (dịch trái b, p lần)
    • ans:=ans + dịch trái 1 p lần
  • nếu x> 0 đúng và y> 0 cũng đúng, thì trả về ans, ngược lại trả về (- ans)

Ví dụ (C ++)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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

Đầu vào

"26"
"12"

Đầu ra

"312"