PAT 1002 A+B for Polynomials (25 分)Java實現
阿新 • • 發佈:2018-11-25
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]));
}
}
}
}