设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
输入样例:
4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1
输出样例:
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0
import java.util.Scanner;
class NodeList {
int data;
NodeList next;
public NodeList() {
}
public NodeList(int data) {
this(data, null);
}
public NodeList(int data, NodeList next) {
this.data = data;
this.next = next;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String sum1 = "";
String sum2 = "";
int n1 = sc.nextInt();
int input1[] = new int[n1 * 2];
for (int j = 0; j < input1.length; j++) {
input1[j] = sc.nextInt();
}
NodeList l1 = new NodeList(input1[input1.length - 1]);
for (int i = input1.length - 2; i >= 0; i--) {
l1 = new NodeList(input1[i], l1);
}
int n2 = sc.nextInt();
int input2[] = new int[n2 * 2];
for (int j = 0; j < input2.length; j++) {
input2[j] = sc.nextInt();
}
NodeList l2 = new NodeList(input2[input2.length - 1]);
for (int i = input2.length - 2; i >= 0; i--) {
l2 = new NodeList(input2[i], l2);
}
NodeList teml2 = l2;
while (teml2 != null) {
NodeList teml1 = l1;
while (teml1 != null) {
if (teml2.data == 0 || teml1.data == 0) {
sum1 += ("0" + " " + "0" + " ");
} else {
sum1 += (teml1.data * teml2.data + " " + (teml1.next.data + teml2.next.data) + " ");
}
teml1 = teml1.next.next;
}
teml2 = teml2.next.next;
}
while (l1 != null || l2 != null) {
if (l1 == null) {
sum2 += (l2.data + " " + l2.next.data + " ");
l2 = l2.next.next;
continue;
}
if (l2 == null) {
sum2 += (l1.data + " " + l1.next.data + " ");
l1 = l1.next.next;
continue;
}
if (l1.next.data == l2.next.data && l1.data + l2.data == 0) {
l1 = l1.next.next;
l2 = l2.next.next;
continue;
}
if (l1.next.data == l2.next.data) {
sum2 += ((l1.data + l2.data) + " " + l1.next.data + " ");
l1 = l1.next.next;
l2 = l2.next.next;
continue;
}
if (l1.next.data > l2.next.data) {
sum2 += (l1.data + " " + l1.next.data + " ");
l1 = l1.next.next;
} else {
sum2 += (l2.data + " " + l2.next.data + " ");
l2 = l2.next.next;
}
}
System.out.println(sum1.substring(0, sum1.length() - 1));
System.out.println(sum2.substring(0, sum2.length() - 1));
}
}