一、多项式的加法
算法思路:开一个double 型数组,数组下标表示多项式的指数,在输入时对数组值进行加减
算法代码:
#include <cstdio> const int maxn = 1010; double p[maxn] = {0}; int main(){ int k,n,count=0; double a; scanf("%d",&k); for(int i=0;i<k;i++){ scanf("%d %lf",&n,&a); p[n] += a; } scanf("%d",&k); for(int i=0;i<k;i++){ scanf("%d %lf",&n,&a); p[n] += a; } //判断有多少个有效指数项 for(int i=0; i<maxn;i++){ if(p[i]!=0) count++; } printf("%d",count); for(int i=maxn-1; i>=0;i--){ if(p[i]!=0) printf(" %d %.1lf",i,p[i]); } return 0; }二、多项式的乘法
算法思路:开一个结构体数组,第一次输入数组A,第二次输入数组时,每一项都与数组A中的项指数相加,系数相乘
算法代码:
#include <cstdio> struct Poly{ int exp; double cof; }poly[1010]; double ans[2010] = {0}; int main(){ int k,n,count=0; scanf("%d",&k); for(int i=0;i<k;i++){ scanf("%d %lf",&poly[i].exp,&poly[i].cof); } scanf("%d",&n); for(int i=0;i<n;i++){ int exp; double cof; scanf("%d %lf",&exp,&cof); for(int j=0; j<k;j++){ ans[exp+poly[j].exp] += cof * poly[j].cof; } } for(int i=0; i<2010;i++){ if(ans[i]!= 0.0) count++; } printf("%d",count); for(int i=2000; i>=0;i--){ if(ans[i]!=0.0) printf(" %d %.1lf",i,ans[i]); } return 0; }