美战crystal第一季:1996年信息学奥赛'实在不会了

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 00:24:58
第5题
[问题描述]
多项式加法运算:一个仅含有x的多项式可以用下列的方式表示:
(系数,指数),(系数,指数),…,(0,0)。其中(0,0)作为结束标志。
例如:P(x)=4x6-3x3+2x2-1可表示为:(4,6),(-3,3),(2,2),(-1,0),(0,0)
Q(x)=x4-x+1 可表示为:(1,4),(-1,1),(1,0),(0,0)
当用上面的方式给出2个多项式之后,程序对这两个多项式进行加法运算,结果也用上面
的方式给出。
例如:上面的P(x)和Q(x)相加的结果为:4x6+x4-3x3+2x2-x
表示结果为:(4,6),(1,4),(-3,3),(2,2),(-1,1),(0,0)
[算法说明]
多项式可用数组p:array[1..n,1..2] of integer表示。
分别以P1表示p,p2表示q,p3表示结果。处理的过程为将p赋值到p3,然后逐项检查q,
当发现有相同的方次时,进行系数相加;当发现没有相同的方次时,插入到p3中去。
[程序清单]
var x, y, i, i1, j, j1, j2:integer;
p1, p2, p3: array [1..20, 1..2] of integer;
begin
i1:=0;
write('Input P(x)=');
read (x, y);
while x <> 0 do begin
j1:=j1+1; p1[j1,1]:=x;p1[j1,2]:=y;
read(x,y)
end;
j1:=j1+1; p1[j1,1]:=O; p1[j1, 2]:=O;
write ('Input Q (x) =');
read(x, y); j2:=0;
while x <> 0 do begin
j2:=j2+1; p2[j2,1]:=x; p2[j2,2]:=y;
read (x, y)
end;
j2:=j2+1; p2[j2,1]:=0; p2[j2,2]:=O;
for i:=1 to j1 do begin
p3[i,1]:=p1[i, 1];
p3[i,2]:=p1[i, 2]
end;
i:=1;
while ___(1)___ do begin
If ___(2)___ then begin
for j:=j1 down to 1 do begin
p3[j+1,1]:=p3[j,1];
p3[j+1,2]:=p3[j,2]
end;
p3[i,1]:=p2[i,1]; p3[i,2]:=p2[i,2]; j1:=j1+1
end
else begin
i1:=1;
while p2[i,2] < p3[i1,2] do ___(3)___ ;
if p2[i,2]=p3[i1,2] then
p3[i1,1]:= ___(4)___
else begin
For j:=j1 downto i1 do begin
p3[j+1,1]:=p3[j,1];
p3[j+1,2]:=p3[j,2]
end;
p3[i1,1]:=p[I,1]; p3[i1,2]:=p3[I,2]; ___(5)___
end;
end;
i: =i+1;
end;
for j:=1 to j1-2 do write('(',p3[j,1],',',p3[j,2],'),');
writeln('(',p3[j+1,1],',',p3[j+1,2],')');
end.