实现合并两个一元多项式并求一介导
输入:
1.在第一行先输入第一个一元多项式的项数n,接着按指数递降顺序分别输入n对系数与指数,
2.第二行同第一行。
输出:
1.按指数递减顺序输出合并后两个多项式的一介导的系数与指数。
2.若多项式为空,输出“0,0”.
3.结尾不能有空格。
#include<iostream>
using namespace std;
#define MAXSIZE 1000
/*
一元多项式求导
*/
int main() {
int a[MAXSIZE][2];
int b[MAXSIZE][2];
int num1,num2;
cin >> num1 ;
for (int i = 0; i < num1; i++) {
cin >> a[i][0] >> a[i][1];
}
cin >> num2;
for (int i = 0; i < num2; i++) {
cin >> b[i][0] >> b[i][1];
}
if (num1 == 0 && num2 == 0) {
cout << "0 0"; return 0;
}
else if (num1 == 0) {
for (int i = 0; i < num2; i++) {
if (i == num2 - 1)
cout << b[i][0] << " " << b[i][1];
else cout << b[i][0] << " " << b[i][1] << " ";
}
return 0;
}
else if (num2 == 0) {
for (int i = 0; i < num1; i++) {
if (i == num1 - 1)
cout << a[i][0] << " " << a[i][1];
else cout << a[i][0] << " " << a[i][1] << " ";
}
return 0;
}
int c[MAXSIZE][2];
//两个多项式求一介导再相加,存到c中
int size = 0;
int i = 0,j = 0;
while (i < num1 && j < num2) {
if ( a[i][1] - 1 > b[j][1] - 1) {
c[size][0] = a[i][0] * a[i][1];
c[size][1] = a[i][1] - 1;
size++;
i++;
}
else if ( a[i][1] - 1 < b[j][1] - 1) {
c[size][0] = b[j][0] * b[j][1];
c[size][1] = b[j][1] - 1;
size++;
j++;
}
else {
c[size][0] = b[j][0] * b[j][1]+ a[i][0] * a[i][1];
c[size][1] = b[j][1] - 1;
size++;
j++; i++;
}
}
if (a[i][1]) {
c[size][0] = a[i][0] * a[i][1];
c[size][1] = a[i][1] - 1;
size++;
i++;
}
else if (b[j][1]) {
c[size][0] = b[j][0] * b[j][1];
c[size][1] = b[j][1] - 1;
size++;
j++;
}
size--;
for (int i = 0; i < size; i++) {
if (i == size - 1)
cout << c[i][0] << " " << c[i][1];
else cout << c[i][0] << " " << c[i][1] << " ";
}
return 0;
}