fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. // Hàm nhân hai số nguyên không âm có nhiều chữ số
  8. string multiply(const string &num1, const string &num2) {
  9. if (num1 == "0" || num2 == "0") return "0"; // Nếu một trong hai số là 0
  10.  
  11. int n1 = num1.size(), n2 = num2.size();
  12. vector<int> result(n1 + n2, 0); // Kết quả tối đa có thể có n1 + n2 chữ số
  13.  
  14. // Nhân từng chữ số của num1 với từng chữ số của num2
  15. for (int i = n1 - 1; i >= 0; i--) {
  16. for (int j = n2 - 1; j >= 0; j--) {
  17. int mul = (num1[i] - '0') * (num2[j] - '0'); // Nhân chữ số
  18. int sum = mul + result[i + j + 1]; // Cộng với giá trị hiện tại trong kết quả
  19.  
  20. result[i + j + 1] = sum % 10; // Lưu lại chữ số ở vị trí
  21. result[i + j] += sum / 10; // Chuyển phần trăm lên vị trí trước
  22. }
  23. }
  24.  
  25. // Chuyển đổi kết quả thành chuỗi
  26. string resultStr;
  27. for (auto &num : result) {
  28. if (!(resultStr.empty() && num == 0)) { // Bỏ qua 0 ở đầu
  29. resultStr.push_back(num + '0');
  30. }
  31. }
  32.  
  33. return resultStr.empty() ? "0" : resultStr; // Nếu không có kết quả thì trả về "0"
  34. }
  35.  
  36. int main() {
  37. string num1, num2;
  38. cin >> num1; // Nhập số thứ nhất
  39. cin >> num2; // Nhập số thứ hai
  40.  
  41. string result = multiply(num1, num2); // Gọi hàm nhân
  42. cout<< result << endl; // Hiển thị kết quả
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
0