1 条题解
-
0
自动搬运
来自洛谷,原作者为

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
- 上传者