[PAT]1009. Product of Polynomials (25)@Java

来源:互联网 发布:淘宝营销活动 编辑:程序博客网 时间:2024/06/11 02:54

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.22 2 1.5 1 0.5
Sample Output
3 3 3.6 2 6.0 1 1.6


PAT通过率100%,牛客只能通过60%。应该是精度问题

package go.jacob.day827;import java.util.Scanner;/** * 1009. Product of Polynomials (25) *  * @author Jacob * */public class Demo2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int N1, N2;double[] coe = new double[1001];double[] res = new double[2001];N1 = sc.nextInt();for (int i = 0; i < N1; i++) {coe[sc.nextInt()] = sc.nextDouble();}N2 = sc.nextInt();int count = 0;for (int i = 0; i < N2; i++) {int expon = sc.nextInt();double coef = sc.nextDouble();for (int j = 0; j < 1001; j++) {if (coe[j] != 0) {res[j + expon] += coef*coe[j];}}}for (int i = 0; i < 2001; i++) {if (res[i] != 0)count++;}System.out.print(count);for (int i = 2000; i >= 0; i--) {if (res[i] != 0)System.out.printf(" %d %.1f", i, res[i]);}sc.close();}}