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