PAT (Advanced Level) 1009 Product of Polynomials (25 分)

版权声明:转载请附链接 https://blog.csdn.net/isunLt/article/details/83868288

1009 Product of Polynomials (25 分)

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​​<⋯<N​2​​<N​1​​≤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

Code:

#include <iostream>
#include <map>
#include <iomanip>
using namespace std;

int main()
{
	const int numOfPoly = 2;
	map<int, float> poly[numOfPoly];
	int k[numOfPoly];
	for (int i = 0; i < numOfPoly; i++)
	{
		cin >> k[i];
		for (int j = 0; j < k[i]; j++)
		{
			int exp;
			float coeff;
			cin >> exp >> coeff;
			if (coeff == 0) continue;
			poly[i][exp] = coeff;
		}
	}
	map<int, float> result;
	for (auto it0 : poly[0])
		for (auto it1 : poly[1])
		{
			int n_exp = it0.first + it1.first;
			float n_coeff = it0.second * it1.second;
			auto itFind = result.find(n_exp);
			if (itFind == result.end())
				result[n_exp] = n_coeff;
			else
			{
				itFind->second += n_coeff;
				if (itFind->second == 0)
					result.erase(itFind);
			}
				
		}
	cout << result.size();
	for (auto it = result.rbegin(); it != result.rend(); it++)
	{
		cout << " " << it->first << " " << setiosflags(ios::fixed) << setprecision(1) << it->second;
	}
	cout << endl;
	return 0;
}

思路:

思路和1002多项式加法题差不多,具体注意事项也参考1002。下面是1002的链接:
https://blog.csdn.net/isunLt/article/details/83654569

以上

猜你喜欢

转载自blog.csdn.net/isunLt/article/details/83868288