313 条题解

  • 0
    @ 2012-10-29 15:49:10

    math库的hypot是个好东西~

    其计算过程是sqrt(sqr(x)+sqr(y))=sqrt(x*x+y*y),所以不必担心负数。

    功能是返回直角三角形中较长边的长度。

    调用方式如下:

    program xx;

    uses math;

  • 0
    @ 2012-08-23 11:48:53

    原来abs的返回值是整数,被害惨了。。。

  • 0
    @ 2012-08-13 14:48:50

    var

    n,i,j:longint;

    ans,r,x,y:real;

    a:array[1..100,1..2]of real;

    /////////////////////////////

    procedure init;

    begin

    read(n);

    read(r);

    for i:=1 to n do

    for j:=1 to 2 do

    read(a);

    ans:=0;

    end;

    /////////////////////////

    procedure js;

    begin

    for i:=1 to n-1 do

    begin

    x:=a-a;

    y:=a-a;

    ans:=sqrt(x*x+y*y)+ans;

    end;

    x:=a[1,1]-a[n,1];

    y:=a[1,2]-a[n,2];

    ans:=ans+sqrt(x*x+y*y)+6.28;

    end;

    ////////////////////////

    BEGIN

    init;

    js;

    writeln(ans:0:2);

    end.

  • 0
    @ 2012-08-01 09:46:28

    点击这里查看

  • 0
    @ 2012-07-22 19:49:33

    大致思路就是算出各点围成的多边形周长在加上一个圆的周长,注意的是单个钉子的处理,还有……π不能用3.14算……会有答案不对……至少取到3.1415的近似值

    program p1007;

    type rec=record

    x,y:real;

    end;

    var 

    r,l:real;

    i,n:integer;

    a:array[1..100] of rec;

    begin

    l:=0;

    readln(n,r);

    for i:=1 to n do

    read(a[i].x,a[i].y);

    if n=1 then writeln(r*6.283:0:2) else

    begin 

    for i:=2 to n do

    l:=l+sqrt(sqr(a[i].x-a.x)+sqr(a[i].y-a.y));

    l:=l+sqrt(sqr(a[n].x-a[1].x)+sqr(a[n].y-a[1].y));

    l:=l+2*r*3.1415;

    writeln(l:0:2);

    end;

    end.

  • 0
    @ 2012-07-18 10:27:08

    原来众所周知.......k(半径)的类型是实数

    题目很简单,画一下图就可以找到规律

  • 0
    @ 2010-07-26 21:30:02

    ...我竟然使用了余弦定理和三角函数的反函数。。。。。。

  • 0
    @ 2010-07-03 17:52:15

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    诶!

  • 0
    @ 2010-04-08 20:32:26

    program p1007;

    const pi=3.1415926;

    var

    n,i:integer;

    r,ans:real;

    x,y:array[1..10000] of real;

    begin

    ans:=0;

    readln(n,r);

    for i:=1 to n do

    readln(x[i],y[i]);

    if (n=1) then begin ans:=2*pi*r end else

    begin

    for i:=2 to n do

    ans:=ans+sqrt(sqr(x[i]-x)+sqr(y[i]-y));

    ans:=ans+2*pi*r+sqrt(sqr(x[n]-x[1])+sqr(y[n]-y[1]));

    end;

    writeln(ans:0:2)

    end.

  • 0
    @ 2010-04-01 16:37:02

    直接算出以圆心为定点的多边形周长加圆的周长即可,稍微想一想就明白了、、、

  • 0
    @ 2010-03-14 01:24:42

    #include

    #include

    #include

    #define Pai 3.14159

    #define X 0

    #define Y 1

    using namespace std;

    int main()

    {

    float points[100][2];

    float answer = 0,R;

    int N;

    cin >> N >> R;

    for(int i = 0; i < N;i++)

    {

    cin >> points[i][X] >> points[i][Y];

    if(i!=0)

    {

    answer += (float)sqrt( (points[X]-points[i][X])*(points[X]-points[i][X]) + (points[Y]-points[i][Y])*(points[Y]-points[i][Y]) );

    }

    }

    answer += (float)sqrt( (points[0][X]-points[N-1][X])*(points[0][X]-points[N-1][X]) + (points[0][Y]-points[N-1][Y])*(points[0][Y]-points[N-1][Y]) );

    answer+= (float)2*Pai*R;

    cout.setf(ios::fixed);

    cout

  • 0
    @ 2010-03-11 13:03:42

    可以简短

    program dingzi;

    var i,n:integer;

    r,s:real;

    d1,d2:array[1..100]of real;

    begin

    readln(n,r);

    for i:=1 to n do readln(d1[i],d2[i]);

    for i:=2 to n do

    s:=s+sqrt((d1[i]-d1)*(d1[i]-d1)+(d2[i]-d2)*(d2[i]-d2));

    s:=s+sqrt((d1[n]-d1[1])*(d1[n]-d1[1])+(d2[n]-d2[1])*(d2[n]-d2[1]));

    s:=s+2*r*3.1415265358;

    writeln(s:0:2);

    end.

  • 0
    @ 2009-11-10 10:25:18

    var i,n:longint;

    r:real;

    s:extended;

    x,y:array[1..100] of real;

    begin

    readln(n,r);

    s:=0;

    readln(x[1],y[1]);

    for i:=2 to n do

    begin

    readln(x[i],y[i]);

    s:=s+sqrt(sqr(x[i]-x)+sqr(y[i]-y));

    end;

    s:=s+sqrt(sqr(x[1]-x[n])+sqr(y[1]-y[n]));

    s:=s+2*3.141526535897932384626433832795028841971375108*r;

    writeln(s:0:2);

    end.

    ............悲剧啊、、求周长求成了面积、、总是不对、、

    我还记得圆周率50位啊、、、、又贪玩了

  • 0
    @ 2009-11-08 18:49:47

    type arr=record

    i,j:extended;

    end;

    var a:array[0..1000] of arr;n,m,i:longint;s:extended;

    begin

    readln(n,m);

    for i:=1 to n do

    readln(a[i].i,a[i].j);

    s:=0;

    a[0]:=a[n];

    for i:=1 to n do

    s:=s+sqrt(sqr(a[i].i-a.i)+sqr(a[i].j-a.j));

    s:=s+2*3.14159*m;

    write(s:0:2);

    end.

    什么是数字格式无效???才过两个点而已~~~~~~~~T.T

  • 0
    @ 2009-11-08 11:28:40

    π要精确到3.1416

  • 0
    @ 2009-11-04 21:40:23

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:83 有效耗时:0ms

    本来打算刷水题,谁知一开始做题就被阴了...

    第三个数据是只有一个钉子,也就是仅输出钉子的周长,预处理没做好的话就会在这里卡死

  • 0
    @ 2009-11-04 21:21:07

    改了两次,过了……数据好像挺弱……

    var

    a:array[1..100,1..2]of real;

    i,k,n:longint;

    r,num:real;

    begin

    readln(n,r);

    for i:=1 to n do

    readln(a,a);

    for i:=2 to n do

    num:=num+sqrt(sqr(a-a)+sqr(a-a));

    num:=num+sqrt(sqr(a[n,1]-a[1,1])+sqr(a[n,2]-a[1,2]));

    num:=num+2*3.1415926*r;

    writeln(num:0:2);

    end.

  • 0
    @ 2009-11-04 13:29:13

    谁过了第三个点?

    LOOK:编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案错误... ├ 标准行输出 18.8

     ├ 错误行输出 36.8

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

  • 0
    @ 2009-11-03 21:56:34

    Program P1007;

    Var

        ans:real;

        i,n:longint;

        a,b,aa,bb,r,sa,sb:real;

    begin

        readln(n,r);

        for i:=1 to n do

         begin

         readln(a,b);

         if i1 then

           ans:=ans+sqrt(sqr(a-aa)+sqr(b-bb))

             else

           begin sa:=a;sb:=b;end;

         aa:=a;bb:=b;

         end;

        ans:=ans+sqrt(sqr(sa-a)+sqr(sb-b));

        ans:=ans+2*3.1415926*r;

        writeln(ans:0:3);

    end.

  • 0
    @ 2009-11-02 11:25:49

    我火星了,居然真的拿三角函数去算。。

信息

ID
1007
难度
5
分类
模拟 点击显示
标签
(无)
递交数
12244
已通过
4327
通过率
35%
被复制
27
上传者