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

Nhân hai đa thức trong C++

Cho hai đa thức dưới dạng mảng hệ số (chỉ số mảng = bậc). Nhân hai đa thức và in kết quả.

Ví dụ

Đầu vào: A = [1, 2, 3, 4] (tức 1 + 2x + 3x² + 4x³)
Đầu vào: B = [4, 3, 2, 1] (tức 4 + 3x + 2x² + 1x³)

Đầu ra: 4x⁶ + 11x⁵ + 20x⁴ + 30x³ + 20x² + 11x + 4

Thuật toán

  • Mảng kết quả có độ dài m + n - 1.
  • Duyệt mọi cặp hệ số: product[i+j] += A[i] * B[j].

Triển khai C++

#include <bits/stdc++.h>
using namespace std;

int* multiplyTwoPolynomials(int A[], int B[], int m, int n) {
    int* product = new int[m + n - 1]();
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            product[i + j] += A[i] * B[j];
    return product;
}

void printPolynomial(int poly[], int n) {
    for (int i = n - 1; i >= 0; i--) {
        cout << poly[i];
        if (i != 0) cout << "x^" << i << " + ";
    }
    cout << endl;
}

int main() {
    int A[] = {1, 2, 3, 4};
    int B[] = {4, 3, 2, 1};
    int m = 4, n = 4;

    cout << "Đa thức 1: "; printPolynomial(A, m);
    cout << "Đa thức 2: "; printPolynomial(B, n);

    int* prod = multiplyTwoPolynomials(A, B, m, n);
    cout << "Tích: "; printPolynomial(prod, m + n - 1);

    delete[] prod;
    return 0;
}

Kết quả

Đa thức 1: 4x^3 + 3x^2 + 2x^1 + 1
Đa thức 2: 1x^3 + 2x^2 + 3x^1 + 4
Tích: 4x^6 + 11x^5 + 20x^4 + 30x^3 + 20x^2 + 11x^1 + 4