现在的位置: 首页 > 综合 > 正文

【PAT Advanced Level】1009. Product of Polynomials (25)

2018年03月22日 ⁄ 综合 ⁄ 共 816字 ⁄ 字号 评论关闭

该题没什么难度,注意最后去除系数为0的项。我用了map<int, double>来保存结果的指数、系数对,正好指数是唯一的。

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

double *A[2];
map<int, double> result;

int main()
{
	//fstream cin("a.txt");

	int i = 0;
	int N[2];
	while (i < 2)
	{
		cin>>N[i];
		A[i] = new double[2 * N[i]];
		int tmp = 0;;
		while (tmp < 2 * N[i])
		{
			cin>>A[i][tmp];
			tmp++;
		}
		i++;
	}
	

	for(int i = 0; i < 2 * N[0]; i += 2)
	{
		for(int j = 0; j < 2 * N[1]; j += 2)
		{
			double coefficient = A[0][i + 1] * A[1][j + 1];
			int exponent = A[0][i] + A[1][j];
			if(result[exponent] != 0)
				result[exponent] += coefficient;
			else
				result[exponent] = coefficient;
		}
	}

	for(map<int, double>::iterator it = result.begin(); it != result.end(); it++)
	{
		if((*it).second == 0)
			result.erase(it);
	}

	cout<<result.size();
	for(map<int, double>::reverse_iterator rit = result.rbegin(); rit != result.rend(); rit++)
	{
		cout<<" "<<(*rit).first<<" "<<fixed<<setprecision(1)<<(*rit).second;
	}

	return 0;
}

抱歉!评论已关闭.