⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arctan3.pas

📁 arctan.zip
💻 PAS
字号:
program ProblemArctan;
  const
    infname='arctan.in';
    outfname='arctan.out';
  var
    a:extended;

  procedure init;
    begin
      assign(input,infname);
      reset(input);
      read(a);
      close(input);
    end;

  procedure print(k:extended);
    begin
      assign(output,outfname);
      rewrite(output);
      writeln(k:0:0);
      close(output);
    end;

  procedure main;
    var
      d,x,k,deta1,deta,
      p,pq,ans,y,p1:extended;
      i,j:longint;
    begin
      d:=4*a*a+4;
      for i:=round(2*a) downto 1 do
        if (frac(d/i)<1e-6) and (frac((i+d/i)/2)<1e-6) then
        begin
          y:=int((i+(d/i))/2);
          if y*y-d>=0 then
          begin
          x:=int(sqrt(y*y-d));
          deta1:=(4*a)*(4*a)+4*(4+x*x);
          if deta1>=0 then
          begin
            k:=int((4*a+sqrt(deta1))/2);

            deta:=k*k-4*(a*k+1);
            if deta>=0 then
            begin
              pq:=a*k+1;

              p1:=int((k-int(sqrt(deta)))/2);
              for j:=-2 to 2 do
                begin
                  p:=p1+j;
                  if abs(p*(k-p)-pq)<1e-6 then
                  begin
                    print(k);
                    exit;
                  end;
                end;

              p1:=int((k+int(sqrt(deta)))/2);
              for j:=-2 to 2 do
                begin
                  p:=p1+j;
                  if abs(p*(k-p)-pq)<1e-6 then
                  begin
                    print(k);
                    exit;
                  end;
                end;
            end; {deta>=0}
          end; {deta1>=0}
          end;
        end; {end for}
    end;

  begin
    init;
    main;
  end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -