题目大意:
给出两个多项式,求他们的乘积,按给定格式输出。
输入:
两个如下格式的多项式
K N1 aN1 N2 aN2 …NK aNK
K(多项式中项的数目)Ni(多项式中第i项的指数)aNi(多项式中第i项的系数)
输出:
两个多项式的乘积按给定格式输出
思路:
①先用一个double数组num保存第一个多项式
②读取第二个多项式的时候,第一个多项式的每一项与读取到的项相乘保存到result数组中
代码:
#include<cstdio>
using namespace std;
double num[1005],result[2010];
int sum,n;
int main()
{
int e; //指数
double c; //系数
scanf("%d",&n);
for (int i = 0; i < n; i++) {//读取第一个多项式
scanf("%d %lf",&e,&c);
num[e] = c;
}
scanf("%d",&n);
for (int i = 0; i < n; i++) {//读取第二个多项式
scanf("%d %lf",&e,&c);
for (int j = 0; j < 1005; j++) {//将第一个多项式的每一项与当前读取到的第二个多项式的项相乘保存到result数组中
if (num[j] != 0) {
result[j + e] += c * num[j];
}
}
}
for (int i = 0; i < 2010; i++) {//求出结果多项式的项数
if (result[i] != 0) {
sum++;
}
}
printf("%d",sum);
for (int i = 2009; i >= 0; i--) {
if (result[i] != 0) {
printf(" %d %.1f", i, result[i]);
}
}
return 0;
}