ex.dpr
来自「tongji acm-online judge solution」· DPR 代码 · 共 45 行
DPR
45 行
program Ural_1302(Input,Output);
type
TIndex=Longint;
procedure Main;
var
N1,N2,X1,X2,Y1,Y2:TIndex;
Tmp:TIndex;
begin
Readln(N1,N2);
if N1>N2 then
begin
Tmp:=N1;
N1:=N2;
N2:=Tmp;
end;
//x轴为level 0.
//y轴为三角形中线
//get coordinates
Y1:=Trunc(Sqrt(N1-1))+1;
X1:=N1-(Sqr(Y1)-Y1+1);
Y2:=Trunc(Sqrt(N2-1))+1;
X2:=N2-(Sqr(Y2)-Y2+1);
if Y2-Y1<=Abs(X2-X1) then //斜着或横着走
Writeln(Y2-Y1+Abs(X2-X1))
else
begin //需要竖着S型走
Tmp:=Abs(X2-X1);
Writeln(Tmp*2+(Y2-Y1-Tmp) div 2*4+Ord(Odd(Y2-Y1-Tmp))*(1+2*Ord(not Odd(Y1+X2))));
{
1) Tmp*2: 为斜着走的步数
2) (Y2-Y1-Tmp) div 2*4: S型走完整周期的步数
3) Ord(Odd(Y2-Y1-Tmp))*(1+2*Ord(not Odd(Y1+X2))):
Odd(Y2-Y1-Tmp) 当存在不完整周期时,
Odd(Y1+X2) 当x2,y1为朝下走节点,不完整周期步数为1
Even(Y1+X2) 当x2,y1为朝上走节点,不完整周期步数为3
ps:
若odd(x+y) 朝下走节点
若even(x+y) 朝上走节点
}
end;
end;
begin
Main;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?