题目粗心:
给定 2 个多项式,求他们的乘积
算法思路:
间接模仿 2 个多项式乘积的过程即可,应用数组 A 和 B 别离寄存 2 个多项式,其中下标为指数,其值为系数,而后应用 result 保留两者相乘的后果,对于 A 的每一项都与 B 的每一项相乘,而后只有该项不为 0,就将后果累加到 result 对应的指数地位,最初统计 result 不为 0 的项个数并且输入后果即可。
留神点:
1、留神得初始化数组
2、留神空格的输入
3、result 的数组大小至多为 2001,因为有可能有指数为 2000 的项。
提交后果:
AC 代码:
#include<cstdio>
using namespace std;
int main(){
int K;
int N;// 指数
double AN;// 系数
double A[1001] = {};
double B[1001] = {};
double result[2001] = {};
// 先输出多项式 A
scanf("%d",&K);
for(int i=0;i<K;++i){scanf("%d %lf",&N,&AN);
A[N] = AN;
}
// 再输出多项式 B
scanf("%d",&K);
for(int i=0;i<K;++i){scanf("%d %lf",&N,&AN);
B[N] = AN;
}
// 计算 A 乘以 B
for(int i=0;i<1001;++i){for(int j=0;j<1001;++j){double multi = A[i]*B[j];
if(multi!=0){result[i+j] += multi;
}
}
}
// 统计 result 不为 0 的项数
int num = 0;
for(int i=0;i<2001;++i){if(result[i]!=0){++num;}
}
// 输入后果
printf("%d",num);
for(int i=2000;i>=0;--i){if(result[i]!=0){printf("%d %.1lf",i,result[i]);
}
}
return 0;
}