用c++书写这个程序:这仍然是一道关于AB的题只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R其中R的阶数必须小于B的阶数。输入格式:输入分两行每行给出一个非零多项式先给出A再给出B。每行的格式如下:N e1 c1 eN cN其中N是该多项式非零项的个数ei是第i个非零项的指数ci是第i个非零项的系数。各项按照指数递减的顺序给出保证所有指数是各不相同的非负整数所有系数是非零整数所
#include
using namespace std;
struct Term { int exponent; int coefficient; };
void dividePolynomials(vector
while (m >= n) {
int q = A[0].coefficient / B[0].coefficient;
int e = A[0].exponent - B[0].exponent;
Q.push_back({e, q});
for (int i = 0; i < n; i++) {
A[i].coefficient -= B[i].coefficient * q;
}
while (!A.empty() && A[0].coefficient == 0) {
A.erase(A.begin());
}
m = A.size();
}
R = A;
}
int main() {
vector
int N;
cin >> N;
for (int i = 0; i < N; i++) {
int e, c;
cin >> e >> c;
A.push_back({e, c});
}
cin >> N;
for (int i = 0; i < N; i++) {
int e, c;
cin >> e >> c;
B.push_back({e, c});
}
dividePolynomials(A, B, Q, R);
if (Q.empty()) {
cout << "0 0 0.0" << endl;
} else {
for (int i = 0; i < Q.size(); i++) {
cout << Q[i].exponent << " " << Q[i].coefficient << " " << fixed << setprecision(1) << static_cast<double>(Q[i].coefficient) << " ";
}
cout << endl;
}
if (R.empty()) {
cout << "0 0 0.0" << endl;
} else {
for (int i = 0; i < R.size(); i++) {
cout << R[i].exponent << " " << R[i].coefficient << " " << fixed << setprecision(1) << static_cast<double>(R[i].coefficient) << " ";
}
cout << endl;
}
return 0;
原文地址: http://www.cveoy.top/t/topic/hTzB 著作权归作者所有。请勿转载和采集!