解法一:模拟
模拟多项式乘法的运算过程,注意系数为0的项。
import java.io.*;
public class Main {
private static float[] A = new float[1005];
private static float[] B = new float[1005];
private static float EXP = 1e-5f;
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
float[] A = new float[1005];
float[] B = new float[1005];
float[] C = new float[2010];
read(in, A);
read(in, B);
for (int i = 0; i < A.length; ++i) {
for (int j = 0; j < B.length; ++j) {
C[i + j] += A[i] * B[j];
}
}
int ans = 0;
for (float v : C) {
if (!equalZero(v)) {
++ans;
}
}
out.print(ans);
for (int i = C.length - 1; i >= 0; --i) {
if (!equalZero(C[i])) {
out.printf(" %d %.1f", i, C[i]);
}
}
out.println();
out.flush();
}
private static boolean equalZero(float f) {
if (Math.abs(f) < EXP) {
return true;
}
return false;
}
private static void read(StreamTokenizer in, float[] arr) throws IOException {
in.nextToken();
int len = (int) in.nval;
for (int i = 0; i < len; ++i) {
in.nextToken();
int exponent = (int) in.nval;
in.nextToken();
float coef = (float) in.nval;
arr[exponent] = coef;
}
}
}