1. 程式人生 > >PAT 1002 A+B for Polynomials (25 分)Java實現

PAT 1002 A+B for Polynomials (25 分)Java實現

1. 題意

給兩個多項式,把它們加起來
樣例分析:
A多項式
2 1 2.4 0 3.2 第一個2指得是2個非0係數項
然後的兩個數,1是項數,2.4是係數
最後兩個數,0是項數,3.2是係數
所以就有f(x) = 2.4x + 3.2
B多項式
2 2 1.5 1 0.5
f(x) = 1.5x² + 0.5x
所以它們的和就是F(x) = 1.5x² + 2.9x + 3.2,然後我們先輸出總項數,再依次輸出這個多項式的項數和係數

2. 思路

用陣列下標存項數,陣列值存係數

2. 程式碼:

package adv1002;

import java.io.BufferedReader;
import java.io.IOException; import java.io.InputStreamReader; public class Main { static double[] a, b, sum; static int maxn = 1005; public static void main(String[] args) throws IOException { int count = 0; a = new double[maxn]; b = new double[maxn]; sum =
new double[maxn]; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] aLine = br.readLine().split(" "); String[] bLine = br.readLine().split(" "); int K = Integer.parseInt(aLine[0]); int M = Integer.parseInt(bLine[0]); for
(int i = 1, j = 1; i <= K; i++) { int n = Integer.parseInt(aLine[j++]); double p = Double.parseDouble(aLine[j++]); sum[n] += p; } for (int i = 1, j = 1; i <= M; i++) { int n = Integer.parseInt(bLine[j++]); double p = Double.parseDouble(bLine[j++]); sum[n] += p; } for (int i = 0; i < maxn; i++) { if (sum[i] != 0) { count++; } } System.out.print(count); for (int i = maxn - 1; i >= 0; i--) { if (sum[i] != 0) { System.out.print(" " + i + " " + String.format("%.1f", sum[i])); } } } }