一元多项式的乘法与加法运算

设计函数分别求两个一元多项式的乘积与和。
输入:
两行 每一行都一样
系数,指数:绝对值不超过1000的整数
多项式非零项个数 非零系数 前一个系数对应的指数
输出:
按输入方式输出
如果是0多项式 输出0 0
结尾不能有多余空格

#include <iostream>
#include <vector>
using namespace std;
void print(int max,int a[]){
    //若结果为0 输出0 0
    int flag = 0;
    for(int i = max; i >=0; --i){
      if(a[i]){
         if(flag++)
        printf(" %d %d",a[i],i);
        else
             printf("%d %d",a[i],i);
        }
    }
    if(!flag){
        printf("0 0");
    }
}
int main (){
    int m,n;//读取两个的长度
    int exp,cof;
    int x[1001]={0},v[1001]={0};
    int a[2001]={0};
    int _a[1001]={0};
    scanf("%d",&m);
    for(int i = 0;i<m;++i){
        scanf("%d",&cof);
        scanf("%d",&exp);
        x[exp]=cof;
    }
    scanf("%d",&n);
     for(int i = 0;i<n;++i){//读取多项式
        scanf("%d",&cof);
        scanf("%d",&exp);
 v[exp]=cof;
    }
    for(int i = 0;i<1001;++i){//多项式乘法
        for(int j = 0; j < 1001;++j){
            a[i+j] += x[i]*v[j];
        }
    }
    print(2000,a);//输出乘法多项式
    for(int i = 0; i < 1001;++i){//多项式加法
        _a[i] += x[i];
    }
    for(int i = 0; i< 1001;++i){
        _a[i] += v[i];
    }
    printf("\n");
    print(1000,_a);//输出加法多项式
    return 0;
}

第一步

对于题目进行分析,应该采取怎样的数据结构。
对于多项式,一般有两种,一种链式,一种顺序。
数组形式的多项式的缺点是大小不能确定,存放多元多项式不方便,但是优点是不需要考虑合并同类项这个操作。对于链式,优点是放多元多项式方便,但是合并同类项不方便,每次需要多做判断,代码上写起来不方便。
对于具体的这题,由于给出了系数与指数的范围,采取数组形式的多项式是优于链式的。

第二步

异常情况考虑。
同类项的抵消:依据存储形式已经解决
输入有0多项式的情况:依据存储形式解决
取到最大值:数组大小的问题

第三步:

编程,为将要使用的变量给予合适的定义和大小。
输出格式控制。

第四步:

提交

给出我自己测试我的代码的数据:

4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1
结果:
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0

0
3 2 2 2 1 2 0
输出
0 0
2 2 2 1 2 0

2 2 1 3 0
3 2 2 -2 1 -3 0
输出
4 3 2 2 -12 1 -9 0
2 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值