题目粗心:

给定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;}