MULBIG - Nhân 2 số nguyên lớn

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho hai số nguyên không âm ~a~ và ~b~. Hãy tính ~a × b~.

Input

  • Dòng đầu chứa số ~a~.
  • Dòng sau chứa số ~b~.

Giới hạn:

  • ~0 \le a, b < 10^{1000} (a, b\text{ có không quá }1000\text{ chữ số})~

Output

  • Gồm một dòng duy nhất là kết quả của ~a × b~.

Sample

Input #1
123
4567
Output #1
561741
Input #2
1234567890
9879879876543219876
Output #2
12197382452637423456119381640

Problem source: Chuyên Sơn La Online Judge


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    Winnguyen102  đã bình luận lúc 5, Tháng 4, 2025, 13:47

    a,b=map(int,input().split()) print(a+b)


  • 0
    Winnguyen102  đã bình luận lúc 5, Tháng 4, 2025, 13:46

    ddaay laf code python


  • -1
    hiepthinh  đã bình luận lúc 26, Tháng 3, 2025, 2:54

    include <iostream>

    include <vector>

    include <algorithm>

    using namespace std;

    // Hàm nhân hai số nguyên không âm có nhiều chữ số string multiply(const string &num1, const string &num2) { if (num1 == "0" || num2 == "0") return "0"; // Nếu một trong hai số là 0

    int n1 = num1.size(), n2 = num2.size();
    vector<int> result(n1 + n2, 0); // Kết quả tối đa có thể có n1 + n2 chữ số
    
    // Nhân từng chữ số của num1 với từng chữ số của num2
    for (int i = n1 - 1; i >= 0; i--) {
        for (int j = n2 - 1; j >= 0; j--) {
            int mul = (num1[i] - '0') * (num2[j] - '0'); // Nhân chữ số
            int sum = mul + result[i + j + 1]; // Cộng với giá trị hiện tại trong kết quả
    
            result[i + j + 1] = sum % 10; // Lưu lại chữ số ở vị trí
            result[i + j] += sum / 10; // Chuyển phần trăm lên vị trí trước
        }
    }
    
    // Chuyển đổi kết quả thành chuỗi
    string resultStr;
    for (auto &num : result) {
        if (!(resultStr.empty() && num == 0)) { // Bỏ qua 0 ở đầu
            resultStr.push_back(num + '0');
        }
    }
    
    return resultStr.empty() ? "0" : resultStr; // Nếu không có kết quả thì trả về "0"
    

    }

    int main() { string num1, num2; cin >> num1; // Nhập số thứ nhất cin >> num2; // Nhập số thứ hai

    string result = multiply(num1, num2); // Gọi hàm nhân
    cout<< result << endl; // Hiển thị kết quả
    return 0;
    

    }


  • -4
    kietjumper  đã bình luận lúc 2, Tháng 11, 2024, 3:46 sửa 2

    My Solution (Way 1)

    https://ideone.com/UYv2yH -> Click

    My Solution (Way 2)

    https://ideone.com/jIjPcS -> Click