1009. Product of Polynomials (25)

原创 2015年07月09日 15:43:28

1009. 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<vector>
#include <sstream>
#include<cmath>
#include<iomanip>
#include<iostream>
#include <ctype.h>
#include <stdlib.h>
#include <algorithm>

using namespace std;

int main()
{	
	int n, m;
	float numa[1001] = {0.0};//存放A中的各项信息,下标是指数,数组的值是对应的系数
	float numb[1001] = {0.0};
	float product[2005] = {0.0};//存入乘积的结果

	cin >> n;
	for (int i = 0; i < n; i++)
	{
		int temp;
		cin >> temp;
		cin >> numa[temp];
	}

	cin >> m;
	for (int i = 0; i < m; i++)
	{
		int temp;
		cin >> temp;
		cin >> numb[temp];
	}
	
	for (int i = 0; i <1001; i++)//i,j的取值尤其注意,一开始没考虑周全,导致两个测试用例出错
	{		 
		for (int j = 0; j <1001; j++)
		{
			float coeff = numa[i] * numb[j];
			int exp = i + j;
			product[exp] = product[exp]+ coeff;//注意这里的逻辑不要写错了
		}
	}

	int count = 0;
	float t = 0.05;
	for (int i = 0; i < 2005; i++)//特别注意取值范围
	{
		if (abs(product[i])>=t)//这里要特别注意,四舍五入后为0的项,也不能显示,并且要加绝对值才能通过最后一个测试用例,但是我其实不是很明白,他们都是大于0的数,为何要加绝对值,但是不加真的就是通不过第一个测试用例,减5分
			count++;
	}
	cout << count;
	
	for (int i = 2004; i >=0; i--)//特别注意取值范围
	{
		if (abs(product[i])>= t)
		{
			cout << " " << i << " " << setiosflags(ios::fixed) << setprecision(1) << product[i];
		}			
	}

	return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

PAT A1009. Product of Polynomials (25)

This time, you are supposed to find A*B where A and B are two polynomials. Input Specification: ...

1009. Product of Polynomials (25)

题目链接:http://www.patest.cn/contests/pat-a-practise/1009 题目: 时间限制400 ms 内存限制65536 kB 代码长度限制16000 B 判题程...

1009. Product of Polynomials (25)

This time, you are supposed to find A*B where A and B are two polynomials. Input Specification: ...

pat 1009. Product of Polynomials (25)

Product of Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN,...

PAT A 1009. Product of Polynomials (25)

原题 This time, you are supposed to find A*B where A and B are two polynomials. Input Specification:...

PAT甲级真题及训练集(4)--1009. Product of Polynomials (25)

1009. Product of Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 ...

1009. Product of Polynomials (25)

1009. Product of Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B ...

1009. Product of Polynomials (25)

1009. Product of Polynomials (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B ...

浙江大学PAT上机题解析之1009. Product of Polynomials (25)

浙江大学PAT机试题题解

【PAT甲级】【C++】1009. Product of Polynomials (25)

第一次 用数组   用float型   且  没加绝对值  得5分  感觉数组会超时,换结构体 第二次 用结构体   用float型   且  没加绝对值  得20分  第三次 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)