1009. Product of Polynomials (25)

来源:互联网 发布:程序员 工资 编辑:程序博客网 时间:2024/05/21 22:39
  1. Product of Polynomials (25)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
This time, you are supposed to find A*B where A and B are two polynomials.

Input Specification:

Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 … NK aNK, where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, …, K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10, 0 <= NK < … < N2 < N1 <=1000.

Output Specification:

For each test case you should output the product of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate up to 1 decimal place.

Sample Input
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output
3 3 3.6 2 6.0 1 1.6

求多项式的乘积,保留一位小数

#include<iostream>#include<cstdio>using namespace std;struct  N {int y;double x;};//x^ystruct N A[1000];struct N B[1000];double C[10000];int main(){    int yy;    double xx;    int a,b;    int sum=0;    cin>>a;    for (int i=0;i<a;i++)    {        cin>>yy>>xx;        A[i].x=xx;        A[i].y=yy;    }    cin>>b;    for (int i=0;i<b;i++)    {        cin>>yy>>xx;        B[i].x=xx;        B[i].y=yy;    }    for (int i=0;i<a;i++)    {        for (int j=0;j<b;j++)        {            C[A[i].y+B[j].y]+=A[i].x*B[j].x;        }    }    for (int i=10000-1;i>=0;i--)    {        if (C[i]!=0)            sum++;    }    cout<<sum;     for (int i=10000-1;i>=0;i--)    {        if (C[i]!=0)            printf(" %d %.1f",i,C[i]);    }    return  0;}