回 帖 发 新 帖 刷新版面

主题:[讨论]AB数!50分!!

四、AB数
源程序名    abnum.PAS
可执行文件名   abnum.EXE
输出文件名     abnum.OUT
时限           3秒

    求前10组C和N,使A=B,其中A=1+2+3+……+(C-1),B= (C+1)+(C+2)+……+N,且1<C<N,如C=6,N=8时,A=1+2+3+4+5=15,B=7+8=15,6和8就是满足条件的一组C和N。

输出时要求一行输出一组数,两数之间用若干个空格分隔,两列数据要对齐,并按C的值从小到大的次序依次输出,已知前10组C和N不会超出长整型数的范围。

回复列表 (共1个回复)

沙发


program abnum;
const max=10;
      width=16;
var i,k,s,square_t,t,total:longint;
    c,n:array[1..max] of longint;

function min(x,y:longint):longint;
  begin
    if x<y then min:=x else min:=y
  end;

begin
     s:=3;
     total:=0;
     repeat
           k:=-1;
           while k<=1 do
           begin
                square_t:=(s*s+k) div 2;
                t:=trunc(sqrt(square_t+0.5));
                if t*t=square_t then
                begin
                     total:=total+1;
                     c[total]:=s*t;
                     n[total]:=min(s*s,2*t*t)
                end;
                k:=k+2
           end;
           s:=s+2
     until total=max;
     assign(output,'abnum.out');
     rewrite(output);
     writeln('C':width,'N':width);
     for i:=1 to max do writeln(c[i]:width,n[i]:width);
     close(output);
end.

我来回复

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