题目粗心:
给定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;
}
发表回复