📄 arctan3.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 + -