1
多项式加法(5分)
题目内容:
一个多项式可以表达为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
时间限制:500ms内存限制:32000kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
import
java.util.Scanner;
public
class
hello
{
public
static
void
main(String[] args)
{
// TODO Auto-generated method stub
//多项式
Scanner in =
new
Scanner(System.in);
int
[] a,b;
//存放两个多项式
int
max=
0
;
//存放最高幂数组的长度
//第一个多项式开始
int
n=in.nextInt();
//读入幂并临时保存到n
int
x=in.nextInt();
//读入系数并临时保存到x
a=
new
int
[n+
1
];
//以最大幂确定数组的长度并实例化数组
a[n]=x;
do
{
n=in.nextInt();
//读入幂
x=in.nextInt();
//读入系数
a[n]=x;
}
while
(n!=
0
);
//如果n为则第一个多项读入结束,循环结束。
//第二个多项开始
n=in.nextInt();
x=in.nextInt();
b=
new
int
[n+
1
];
do
{
n=in.nextInt();
x=in.nextInt();
b[n]=x;
}
while
(n!=
0
);
if
(a.length>b.length)
//计算最长数组长度
{
max=a.length;
}
else
{
max=b.length;
}
for
(
int
j=max-
1
;j>=
0
;j--)
{
int
sum=
0
;
if
(j
{
sum=sum+a[j];
}
if
(j
{
sum=sum+b[j];
}
if
(sum==
0
)
//如果系数为零则跳出本次循环
continue
;
if
(j>
1
)
//幂大于1时的输出格式
{
System.out.print(sum+
"x"
+j+
"+"
);
}
else
if
(j==
0
)
//幂为时的输出格式
{
System.out.print(sum);
}
else
if
(j==
1
)
//幂1为时的输出格式
{
System.out.print(sum+
"x"
+
"+"
);
}
}
}
}
|