Trang chủ Tin Học Lớp 9 Cho 2 số nguyên dương A và B (A, B≤...

Cho 2 số nguyên dương A và B (A, B≤ 1020). Tính tích A x B. Dữ liệu đầu vào: Dữ liệu xuất ra: Dòng 1: Số nguyên dương A Dòng 2: Số nguyên dương B In ra một

Câu hỏi :

Dùng xâu để code c++ giúp mình 

image

Cho 2 số nguyên dương A và B (A, B≤ 1020). Tính tích A x B. Dữ liệu đầu vào: Dữ liệu xuất ra: Dòng 1: Số nguyên dương A Dòng 2: Số nguyên dương B In ra một

Lời giải 1 :

Hàm add_string nhận đầu vào là 2 chuỗi số sau đó thực hiện phép tính từ trái sang phải như phép tính thủ công. Ngoài ra những note khác mình để trong code nhé

#include <iostream>
#include <string>
using namespace std;

string addStrings(string num1, string num2) {
    // Đảm bảo num1 có độ dài lớn hơn hoặc bằng num2
    if (num1.length() < num2.length()) {
        swap(num1, num2);
    }
    
    int carry = 0;
    string result = "";
    
    // Thực hiện phép cộng từ phải sang trái
    int i = num1.length() - 1;
    int j = num2.length() - 1;
    while (i >= 0) {
        int digit1 = num1[i] - '0';
        int digit2 = j >= 0 ? num2[j] - '0' : 0;
        
        int sum = digit1 + digit2 + carry;
        carry = sum / 10;
        result = to_string(sum % 10) + result;
        
        i--;
        j--;
    }
    
    // Nếu còn dư carry, thêm vào kết quả
    if (carry > 0) {
        result = to_string(carry) + result;
    }
    
    return result;
}

int main() {
    string num1 = "123456789012345678901234567890";
    string num2 = "987654321098765432109876543210";
    
    string sum = addStrings(num1, num2);
    cout << "Sum: " << sum << endl;
    
    return 0;
}

Lời giải 2 :

#include <bits/stdc++.h>

using namespace std;

string tich(const string& a, const string& b) {
    if (a == "0" || b == "0") return "0";

    int n = a.size();
    int m = b.size();
    vector<int> c(n + m, 0);

    string s1 = a;
    string s2 = b;
    reverse(s1.begin(), s1.end());
    reverse(s2.begin(), s2.end());

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            int d1 = s1[i] - '0';
            int d2 = s2[j] - '0';
            int mul = d1 * d2;
            int sum = mul + c[i + j];
            
            c[i + j] = sum % 10;
            c[i + j + 1] += sum / 10;
        }
    }

    string r;
    bool check = true;
    for (int i = c.size() - 1; i >= 0; --i) {
        if (c[i] != 0 || !check) {
            r.push_back(c[i] + '0');
            check = false;
        }
    }

    return r.empty() ? "0" : r;
}

int main() {
    string a,b;
    cin >> a >> b;
    cout << tich(a, b);
    return 0;
}

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 9

Lớp 9 - Là năm cuối ở cấp trung học cơ sở, chúng ta sắp phải bước vào một kỳ thi căng thẳng và sắp chia tay bạn bè, thầy cô. Áp lực từ kỳ vọng của phụ huynh và tương lai lên cấp 3 thật là lớn, nhưng hãy tin vào bản thân và giữ vững sự tự tin!

Nguồn :

sưu tập

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK