This time, you are supposed to find A+B where A and B are two polynomials.
Input
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
For each test case you should output the sum 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 to 1 decimal place.
Sample Input
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output
3 2 1.5 1 2.9 0 3.2
题目大意:计算A+B的和,A和B都是多项式
PS:感谢github用户@fs19910227提供的pull request~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static class Polynomial { private static int MAX_SIZE = 1001; private double[] coefficients; Polynomial(String[] splits) { coefficients = new double[MAX_SIZE]; for (int i = 1; i < splits.length; i += 2) { int exp = Integer.valueOf(splits[i]); coefficients[exp] = Double.valueOf(splits[i + 1]); } } Polynomial() { coefficients = new double[MAX_SIZE]; } public Polynomial add(Polynomial other) { Polynomial result = new Polynomial(); for (int i = 0; i < MAX_SIZE; i++) { double v = this.coefficients[i] + other.coefficients[i]; v = Math.round(v * 10) / 10.0; if (v != 0.0) { result.coefficients[i] = v; } } return result; } @Override public String toString() { StringBuilder stringBuilder = new StringBuilder(); int size = 0; for (int i = coefficients.length - 1; i >= 0; i--) { double v = coefficients[i]; if (v != 0.0) { stringBuilder.append(i).append(" ").append(v).append(" "); size++; } } stringBuilder.insert(0, size + " "); stringBuilder.deleteCharAt(stringBuilder.length() - 1); return stringBuilder.toString(); } } private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); public static String[] readLine() throws IOException { return reader.readLine().split(" "); } public static void main(String[] args) throws IOException { Polynomial add = new Polynomial(readLine()).add(new Polynomial(readLine())); System.out.println(add); } } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼