1 条题解

  • 0
    @ 2025-8-24 21:25:56

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar sxtm12138
    **

    搬运于2025-08-24 21:25:56,当前版本为作者最后更新于2019-01-09 16:09:09,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    **相信各位dalao做这题时都会猜想:绳子的总长S=一根钉子的周长C1+N **

    边形的周长C2:由于绳子绕过钉子时,绳子所在的直线必定与圆形的钉

    子相切(即圆的半径与绳子垂直),顺次连接钉子的圆心形成一个N边

    形,设第i个角的度数为ai,则可以将绳子中弯曲的部分视为一段度数为

    180-ai的弧(由于相切减2个90度),而N边形内角和为180(n-2),

    所以各弧的度数之和=180-a1+180-a2+……180-an=180n-(a1+……an)

    =180n-180n+360=360。(终于证完了)

    以下为代码 (话糙代码不糙)


    #include<bits/stdc++.h> 
    using namespace std;
    double a[103],r,s=0,b[103];//A为横坐标,B为纵坐标
    int n;//没什么好解释
    int main()
    {cin>>n>>r;
     for(int i=1;i<=n;i++)cin>>a[i]>>b[i];//读入点坐标
     a[n+1]=a[1];
     b[n+1]=b[1];//为计算第1个点到第N个点的距离做准备
     for(int i=1;i<=n;i++)//计算、累加多边形边长
       s+=sqrt((a[i]-a[i+1])*(a[i]-a[i+1])+(b[i]-b[i+1])*(b[i]-b[i+1]));//这是一个漫长的两点距离公式
     printf("%.2lf",s+6.28318*r);//别忘了加上圆的周长
     return 0;
    }//第五次写题解求过,请各位dalao多多指教
    
    • 1

    信息

    ID
    506
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者