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