【PAT 甲级】A1009 Product of Polynomials (25分)

第一次尝试的时候忘记了1000*1000=1000,000
所以数组要开大一点…
别的就没什么了

#include 
using namespace std;
struct node
{
	int exp;
	double coeff;
};
node a[16];
node b[16];
double ans[1000010];
int main(void)
{
	int ka,kb;
	int e;
	int sum=0;
	double c;
	memset(ans,0,sizeof(ans));
	scanf("%d",&ka);
	for(int i=0;i<ka;i++)
	scanf("%d%lf",&a[i].exp,&a[i].coeff);
	scanf("%d",&kb);
	for(int i=0;i<kb;i++)
	scanf("%d%lf",&b[i].exp,&b[i].coeff);
	for(int i=0;i<ka;i++)
	{
		for(int j=0;j<kb;j++)
		{
			e=a[i].exp+b[j].exp;
			c=a[i].coeff*b[j].coeff;
			ans[e]+=c;
		}
	}
	for(int i=0;i<100010;i++)
	if(ans[i]!=0) sum++;
	if(sum==0)
	printf("0");
	else
	{
		printf("%d ",sum);
		for(int i=1000010;i>=0;i--)
		{
			if(ans[i]!=0)
			{
				printf("%d %.1lf",i,ans[i]);
				sum--;
				if(sum!=0) printf(" ");
			}
		}
	}
} 

你可能感兴趣的:(PAT甲级刷题小记)