Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Nhân chuỗi (Multiply Strings) trong C++


Giả sử chúng ta có hai số dưới dạng chuỗi. Chúng ta phải nhân chúng và trả về kết quả cũng dưới dạng chuỗi. Ví dụ, nếu các số là "26" và "12", kết quả sẽ là "312".

Để giải quyết, chúng ta làm theo các bước sau:

  • Nhận hai tham số x và y cho biết x chia y (mô tả gốc có vẻ nhầm lẫn, thực tế là nhân hai số lớn).
  • Thuật toán nhân số lớn mô phỏng phép nhân thủ công: nhân từng cặp chữ số, cộng dồn vào vị trí tương ứng trong mảng kết quả.

Ví dụ (C++)

Xem triển khai sau để hiểu rõ hơn:

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

int main(){
    Solution ob;
    cout << ob.multiply("28", "25");
}

Đầu vào

"26" "12"

Đầu ra

"312"