算法与数据结构——02-线性结构

算法与数据结构

02-线性结构2 一元多项式的乘法与加法运算 (20 分)
设计函数分别求两个一元多项式的乘积与和。

输入格式:
输入分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

#include <stdio.h>
void Get(int X[], int n); //获取X[i] 其中,i表示指数,X[i]表示系数 
void Sum(int X1[], int X2[], int X[]);
void Mul(int X1[], int X2[], int X[], int n1, int n2);
void Put(int X[], int N);

int main(void)
{
	int n1, n2;
	scanf("%d", &n1);
	int X1[1001] = {0};
	Get(X1, n1);
	 
	scanf("%d", &n2);
	int X2[1001] = {0};
	Get(X2,n2);
	//printf("%d\n%d\n%d\n", X2[2], X2[1], X2[0]);
	
	int N = n1 * n2;
	int X[2001] = {0};
	
	Mul(X1, X2, X, n1, n2);//乘法 
	Put(X, N);
	
	printf("\n");
	
	int Xsum[2001] = {0};
	Sum(X1, X2, Xsum);
	Put(Xsum, N);
	
	return 0;	 
} 
void Get(int X[], int n)
{
	int j = 0;
	int k = 0;
	for(int i=0; i<n; i++)
	{
		scanf("%d", &j);
		scanf("%d", &k);
		X[k] = j;
	}
}
void Mul(int X1[], int X2[], int X[], int n1, int n2)
{
	for(int i=0; i<=1000; i++)
	{
		if(X1[i] == 0) 
		continue;
		for(int j=0; j<=1000; j++)
		{
			if(X2[j] == 0)
			continue;
			else 
			X[i+j] += X1[i] * X2[j];
		}
	}
}
void Sum(int X1[], int X2[], int X[])
{
	for(int i=0; i<1000; i++)
	{
		X[i] = X1[i] + X2[i];
	}
}
void Put(int X[], int N)
{
	int flag = 1;
	for(int i=2000; i>=0; i--)
	{
		if(X[i] != 0 && flag==1)
		{
			printf("%d %d", X[i], i);
			flag = 0;	
		}
		else if(X[i] != 0)
		printf(" %d %d", X[i], i);	
	}
	if(flag == 1)
	printf("0 0");	 
}

3.输入有零多项式和常数多项式
不知道为什么不能通过。求教大佬解答
PTA报错提示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值