版权声明:转载请注明出处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;
}