解法一:模拟
模拟多项式乘法的运算过程,注意系数为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;}}}
