题目内容:
一个多项式可以表达为x的各次幂与系数乘积的和,比如:
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。
程序要处理的幂最大为100。
输入格式:
总共要输入两个多项式,每个多项式的输入格式如下:
每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。
注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。
输出格式:
从最高幂开始依次降到0幂,如:
- 2x6+3x5+12x3-6x+20
注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。
输入样例:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
输出样例:
4x6+6x5+12x3+12x2+12x+40
题目难点分析:
多项式加减法,主要有以下难点,是一开始没考虑到的:
1. 某个多项式系数为1时,不能写成1x5,而应该是x5;
2. 某个多项式幂为1时,不能写成5x1,而应该是5x;
3. 首项前面不能加“+”号,因此需要做一个判断首项的记录;
4. 多项式只有0时输出0;
5. x的0次幂如果系数为0,则应该不输出,但我没实现出来……
以下是答案:
1
2
import
java.util.Scanner;
3
4
public
class
Main {
5
6
public
static
void
main(String[] args) {
7
//
TODO Auto-generated method stub
8
9
Scanner in
=
new
Scanner(System.in);
10
11
12
int
[] a
=
new
int
[
10
];
13
int
[] b
=
new
int
[
10
];
14
boolean
isfirst
=
true
;
15
16
17
while
(
true
)
18
{
19
int
i
=
in.nextInt();
20
int
j
=
in.nextInt();
21
a[i]
=
j;
22
if
( i
==
0
)
23
{
24
break
;
25
}
26
}
27
28
while
(
true
)
29
{
30
int
i
=
in.nextInt();
31
int
j
=
in.nextInt();
32
b[i]
=
j;
33
if
( i
==
0
)
34
{
35
break
;
36
}
37
}
38
in.close();
39
40
for
(
int
i
=
0
; i
<
a.length ; i
++
)
41
{
42
if
( a[i]
!=
0
||
b[i]
!=
0
)
43
{
44
a[i]
=
a[i]
+
b[i];
45
}
46
}
47
for
(
int
i
=
a.length
-
1
; i
>
0
; i
--
)
48
{
49
if
(a[i]
>
0
)
50
{
51
if
( isfirst)
52
{
53
isfirst
=
false
;
54
}
55
else
56
{
57
System.out.print(
"
+
"
);
58
}
59
if
( a[i]
==
1
)
60
{
61
if
( i
==
1
)
62
{
63
System.out.print(
"
x
"
);
64
}
65
else
66
{
67
System.out.print(
"
x
"
+
i);
68
}
69
}
70
else
71
{
72
if
( i
==
1
)
73
{
74
System.out.print(a[i]
+
"
x
"
);
75
}
76
else
77
{
78
System.out.print(a[i]
+
"
x
"
+
i );
79
}
80
}
81
82
}
83
else
if
(a[i]
<
0
)
84
{
85
if
( i
==
1
)
86
{
87
System.out.print(a[i]
+
"
x
"
);
88
}
89
else
90
{
91
System.out.print(a[i]
+
"
x
"
+
i );
92
}
93
}
94
}
95
if
( a[
0
]
!=
0
&&
isfirst
==
false
)
96
{
97
System.out.print(
"
+
"
+
a[
0
]);
98
}
99
else
100
{
101
System.out.print(a[
0
]);
102
}
103
}
104
}