PAT甲级1009 Product of Polynomials(C++实现)

 

PAT甲级1009 Product of Polynomials(C++实现)

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 N​1​​ a​N​1​​​​ N​2​​ a​N​2​​​​ ... N​K​​ a​N​K​​​​

where K is the number of nonzero terms in the polynomial, N​i​​ and a​N​i​​​​ (i=1,2,⋯,K) are the exponents and coefficients, respectively. It is given that 1≤K≤10, 0≤N​K​​<⋯

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 
using namespace std;
int main()
{
    int k, num, cnt = 0;
    float val;
    float rec[1005] = {0};//记录第一次输入
    float res[2005] = {0};//记录结果
    cin >> k;
    while (k--)
    {
        cin >> num >> val;
        rec[num] = val;
    }
    cin >> k;
    while (k--)
    {
        cin >> num >> val;
        for (int j = 0; j <= 1000; j++)
            if (rec[j] != 0)
                res[j + num] += rec[j] * val;
    }
    for (int i = 0; i <= 2000; i++)
        if (res[i] != 0)
            cnt++;
    cout << cnt;
    for (int i = 2000; i >= 0; i--)
        if (res[i] != 0)
            printf(" %d %.1f", i, res[i]);
    return 0;
}

本来想着如果在第二行数据输入时就对数据进行处理的话,程序应该能更简洁一些,但是后来发现这样记录的数据补全就算了。

你可能感兴趣的:(C++,PAT)