回 帖 发 新 帖 刷新版面

主题:[讨论]关于合并同类项的问题

【问题描述】
给出两个多项式y1和y2,请你合并同类项。
【输入】
输入数据共两行,每行代表一个多项式。每个多项式按如下形式给出:
a1 b1 a2 b2 … ai bi … an bn
其中a1~an均为整数,表示此多项式n项的系数,b1~bn均为整数,表示此多项式n项的指数。数字与数字之间用一个空格隔开,最后一个数字之后没有空格。
【输出】
输出数据仅一行,表示合并后的多项式,格式同输入形式,按指数递减排列。
【样例】
输入

3 7 5 6 -4 5 -3 2 -8 1 -2 0
9 12 -6 8 -5 7 -5 6 1 4 -8 3 6 2 7 1 3 0


输出


9 12 -6 8 -2 7 -4 5 1 4 -8 3 3 2 -1 1 1 0


这个题目是sznoi上的,题目的网址在这:[url=http://sznoi.cn/oj/ShowProblem?Problemid=c001]http://sznoi.cn/oj/ShowProblem?problemid=c001[/url]

于是问题就来了.

以下为我编的程序.

uses crt;
var i,j,a,b,k,p:integer;
    c,d:array[1..1000]of integer;
function find(x:integer):integer;
  var i:integer;
  begin
    for i:=1 to k do if x=c[i] then exit(i);
    find:=0
  end;
begin
  clrscr;
  k:=0;
  for i:=1 to 2 do begin
    while not(eoln) do begin
      read(a,b);
      p:=find(b);
      if p<>0 then inc(d[p],a) else begin
        inc(k);
        c[k]:=b;
        d[k]:=a
      end
    end;
    readln
  end;
  for i:=1 to k-1 do
    for j:=i+1 to k do
      if c[i]<c[j] then begin
        c[i]:=c[i]+c[j];c[j]:=c[i]-c[j];c[i]:=c[i]-c[j];
        d[i]:=d[i]+d[j];d[j]:=d[i]-d[j];d[i]:=d[i]-d[j]
      end;
  for i:=1 to k do if d[i]<>0 then write(d[i],' ',c[i],' ');
  readln
end.

在SZNOI的测试里面总是只可以过九个点,最后一个测试点会显示以下错误信息:
*** 第 10 点 (10%):WA
你的程序未完成所有输出!!(line:1)
只输出了 0 行!
可能的原因
* 未用读取全部测试数据的方式,(单文件,多数据)。
* 程序没有充分考虑边界值而提前中止

这种情况该怎么解决?

回复列表 (共2个回复)

沙发

。。没人么

板凳

因为最后的结果,有可能所有系数都是0。


你只要输出0就行了。


而不是无输出行。

我来回复

您尚未登录,请登录后再回复。点此登录或注册