题目简介
某天,dh 得到两个多项式,他现在想知道两个多项式相加之后每一项的系数,但是 dh 的数学不好,所以他打算求助聪明的你。
输入格式
输入一共有两行,第一行表示第一个多项式,第二行表示第二个多项式。
每一行第一个数字 n,表示该多项式一共有 n 项,然后后面有 n 对数字
a
i
a_i
ai,
b
i
b_i
bi ,第一个数字
a
i
a_i
ai 表示系数,第二个数字
b
i
b_i
bi 表示指数。
每一行的指数可能出现多次,并且不保证指数有序。
(0 <=
a
i
a_i
ai,
b
i
b_i
bi <=9) , (1<=n<=10)
输出格式
输出一共一行,按照指数从大到小,输出系数,每个系数之间用空格隔开(如果系数为 0 则不输出)。
注意行末无空格。
输入样例
在这里给出一组输入。例如:
4 2 3 3 2 1 1 0 0
3 2 3 3 2 1 1
输出样例
在这里给出相应的输出。例如:
4 6 2
tips
第一个多项式是
2
∗
x
3
+
3
∗
x
2
+
1
∗
x
1
+
0
∗
x
0
2*x^3+3*x^2+1*x^1+0*x^0
2∗x3+3∗x2+1∗x1+0∗x0
第二个多项式是
2
∗
x
3
+
3
∗
x
2
+
1
∗
x
1
2*x^3+3*x^2+1*x^1
2∗x3+3∗x2+1∗x1
两个多项式相加后是
4
∗
x
3
+
6
∗
x
2
+
2
∗
x
1
+
0
∗
x
0
4*x^3+6*x^2+2*x^1+0*x^0
4∗x3+6∗x2+2∗x1+0∗x0
题目要求输出系数不为 0 的项,所以只输出 4 6 2,0 不输出
代码如下
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n,m,a,b;
Scanner scan=new Scanner(System.in);
n=scan.nextInt();
int []num=new int[10];
while(n!=0) {
a=scan.nextInt();
b=scan.nextInt();
if(a<0&&b%2==0) {
a=-a;
}
num[b]+=a;
n--;
}
m=scan.nextInt();
while(m!=0) {
a=scan.nextInt();
b=scan.nextInt();
if(a<0&&b%2==0) {
a=-a;
}
num[b]+=a;
m--;
}
int flag=0;
int i;
for(i=9;i>=0;i--) {
if(num[i]!=0) {
if(flag==0) {
System.out.print(num[i]);
flag++;
}
else {
System.out.print(" "+num[i]);
}
}
}
System.out.println("");
}
}
还请大佬多多指教!