//
// main.cpp
// PAT_1009. Product of Polynomials
//
// Created by wjq on 17/3/30.
// Copyright © 2017年 wjq. All rights reserved.
//
#include <iostream>
#include <string.h>
#include <math.h>
using namespacestd;
#define zero 1e-15
int main(int argc,const char * argv[])
{
double A[1005],B[1005],C[2010],temp,count=0;
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
memset(C,0,sizeof(C));
int K,n;
cin>>K;
for(int i=0;i<K;i++)
{
cin>>n>>temp;
A[n]+=temp;
}
cin>>K;
for(int i=0;i<K;i++)
{
cin>>n>>temp;
B[n]+=temp;
}
for(int i=0;i<1005;i++)
{
if(fabs(A[i])>zero)
{
for(int j=0;j<1005;j++)
if(fabs(B[j])>zero)
C[i+j]+=A[i]*B[j];
}
}
for(int i=0;i<2010;i++)
if(fabs(C[i])>zero)
count++;
cout<<count;
for(int i=2009;i>=0;i--)
if(fabs(C[i])>zero)
printf(" %d %.1lf",i,C[i]);
}
简单模拟题,多项式乘法,
注意C数组一定要开2010,因为A*B,A的最高次可能是1000,然后B的最高次也是1000,这样A*B的最高次就是2000了.这个点错了一次.