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

设计函数分别求两个一元多项式的乘积与和。

输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出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

序号 输入 输出
用例1输入:4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1
用例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
用例2输入:2 1 2 1 0
2 1 2 -1 0
用例2输出:1 4 -1 0
2 2
3
用例3输入:2 -1000 1000 1000 0
2 1000 1000 -1000 0
用例3输出:-1000000 2000 2000000 1000 -1000000 0
0 0
用例4输入0
1 999 1000
用例4输出0 0
999 1000

在这里插入代码片
**注意对数组大小定义不能过小。
#include "stdio.h"//零的多项式是指每个多项式的系数都为零。
#define N 10002
void assign(int p,int *q);//对一个一元多项式读取。
void rideAB(int *p,int *q);//对两个一元多项式求乘积并输出。
void sum(int *p,int *q);//对两个一元多项式求和并输出
int main()
{
    int a,b,arrayA[N]={0},arrayB[N]={0};
    scanf("%d",&a);
    assign(a,arrayA);//读取第一个多项式。
    scanf("%d",&b);
    assign(b,arrayB);//读取第二个多项式。
    rideAB(arrayA,arrayB);//求积输出。
    printf("\n");
    sum(arrayA,arrayB);//求和输出。
    return 0;
}
void assign(int p,int *q)
{
    int x,y;
    for(int i=0;i<p;i++) {scanf("%d %d",&x,&y);q[y]=x;}
}
void sum(int *p,int *q)
{
    int k=0;//k作为计数器控制输出时格式(空格)。
    for(int i=N-1;i>=0;i--)
    {
        if(k&&(p[i]+q[i])) printf(" ");
        if(p[i]+q[i]) {printf("%d %d",p[i]+q[i],i);k++;}
    }
    if(!k) printf("0 0");//求和结果为零多项式
}
void rideAB(int *p,int *q)
{
    int arrayC[N]={0},k=0;
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
            if(p[i]&&q[j]) arrayC[i+j]=arrayC[i+j]+p[i]*q[j];//将乘积存放arrayC中。
    for(int i=N-1;i>=0;i--)//输出。
    {
        if(k&&arrayC[i]) printf(" ");
        if(arrayC[i]) {printf("%d %d",arrayC[i],i);k++;}
    }
    if(!k) printf("0 0");
}

//参考李军老师提示及网上搜索的测试用例。
————————————————
版权声明:本文为CSDN博主「wss123wsj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wss123wsj/article/details/79900625
————————————————
版权声明:本文为CSDN博主「wss123wsj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wss123wsj/article/details/79900625

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值