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

📄 ex.dpr

📁 tongji acm-online judge solution
💻 DPR
字号:
{$N+}
program Ural_1075(Input, Output);
type
    TData = Extended;

function ArcCos(X: TData): TData;
begin
    if X = 0 then
        ArcCos := Pi / 2
    else if X < 0 then
        ArcCos := ArcTan(Sqrt(1 - Sqr(X)) / X) + Pi
    else
        ArcCos := ArcTan(Sqrt(1 - Sqr(X)) / X);
end;

procedure Main;
var
    Ax, Ay, Az, Bx, By, Bz, Cx, Cy, Cz: TData;
    R, D1, D2, D, A0, A1, A2: TData;
begin
    Readln(Ax, Ay, Az);
    Readln(Bx, By, Bz);
    Readln(Cx, Cy, Cz);
    Readln(R);
    D1 := Sqrt(Sqr(Cx - Ax) + Sqr(Cy - Ay) + Sqr(Cz - Az));
    D2 := Sqrt(Sqr(Cx - Bx) + Sqr(Cy - By) + Sqr(Cz - Bz));
    D := Sqrt(Sqr(Bx - Ax) + Sqr(By - Ay) + Sqr(Bz - Az));
    A0 := ArcCos((Sqr(D1) + Sqr(D2) - Sqr(D)) / (2 * D1 * D2));
    A1 := ArcCos(R / D1);
    A2 := ArcCos(R / D2);
    if A0 - A1 - A2 <= 0 then
        Writeln(D: 0: 2)
    else
        Writeln((A0 - A1 - A2) * R + Sqrt(Sqr(D1) - Sqr(R)) + Sqrt(Sqr(D2) - Sqr(R)): 0: 2);
end;
begin
    { Assign(Input, 'i.txt');
     Reset(Input);
     Assign(Output, 'o.txt');
     Rewrite(Output);    }
    Main;
    { Close(Input);
     Close(Output); }
end.

⌨️ 快捷键说明

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