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ố
xvàycho biếtxchiay(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:
#includeusing 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"