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

📄 arctan2.pas

📁 arctan.zip
💻 PAS
字号:
const
  finp = 'arctan.in';
  fout = 'arctan.out';

var
  a, bc: int64;

procedure main;
var
  p, k, q, l, s, sqrts: int64;
  d: array[byte] of int64;

procedure search(idx, mul: int64; last: boolean);
var
  u, v, t: int64;
begin
  if 1.0 * mul * mul > 1.0 * p then exit;
  if idx > l then begin
    u := mul;
    v := p div u;
    t := (v - u) div 2;
    if t * 2 = (v - u) then
    if t < s then begin
      s := t; sqrts := (v + u) div 2;
    end;
    exit;
  end;
  if last or (d[idx - 1] <> d[idx]) then search(idx + 1, mul * d[idx], true);
  search(idx + 1, mul, false);
end;

begin
  p := 4 * a * a + 4;
  k := 2; q := p; l := 0; d[l] := 0;
  while k <= sqrt(q) do begin
    while q mod k = 0 do begin
      l := l + 1; d[l] := k; q := q div k;
    end;
    k := k + 1;
  end;
  if q <> 1 then begin
    l := l + 1; d[l] := q;
  end;
  s := maxlongint; s := s * 16;
  search(1, 1, false);
  bc := 2 * a + sqrts;
end;

begin
  assign(input, finp); reset(input);
  readln(a);
  close(input);
  main;
  assign(output, fout); rewrite(output);
  writeln(bc);
  close(output);
end.

⌨️ 快捷键说明

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