PAT (Advanced Level) Practice 1009 Product of Polynomials

版权声明:转载请注明出处https://blog.csdn.net/hhmy77 https://blog.csdn.net/hhmy77/article/details/88993814

在这里插入图片描述
题目大意 两个多项式相乘 输出相乘后的结果
这里要注意数组要开大点,不然会越界

#include<iostream>
#include<cstdio>
using namespace std;
const int lim=10001;
int main()
{
	int n1,n2;
	cin>>n1;
	double A1[lim]={0};
	double A2[lim]={0};
	int max1=0,max2=0;
	for(int i=0;i<n1;i++)
	{
		int x;
		double num;
		scanf("%d %lf",&x,&num);
		if(x>max1)max1=x;
		A1[x]+=num;
	}
	cin>>n2;
	for(int i=0;i<n2;i++)
	{
		int x;
		double num;
		scanf("%d %lf",&x,&num);
		if(x>max2)max2=x;
	 	A2[x]+=num;
	}
	double A[lim]={0};
	for(int i=0;i<=max1;i++)
	{
		for(int j=0;j<=max2;j++)
		{
			if(A1[i]!=0&&A2[j]!=0)
			{
				A[i+j]+=A1[i]*A2[j];
			}
		}
	}
	int cnt=0;
	for(int i=0;i<lim;i++)
	{
		if(A[i]!=0)
		{
			cnt++;
		}
	}
	printf("%d",cnt);
	for(int i=lim-1;i>=0;i--)
	{
		if(A[i]!=0)
		{
			printf(" %d %.1lf",i,A[i]);
		}
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/hhmy77/article/details/88993814