• 注册
当前位置:1313e > 默认分类 >正文

绕钉子的长绳子

题目背景

平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形。

现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计。

题目描述

求出绳子的长度

输入输出格式

输入格式:

第1行两个数:整数N(1<=N<=100)和实数R。

接下来N行按逆时针顺序给出N个钉子中心的坐标

坐标的绝对值不超过100。

输出格式:

一个数,绳子的长度,精确到小数点后2位。

输入输出样例

输入样例#1:
4 1
0.0 0.0
2.0 0.0
2.0 2.0
0.0 2.0
输出样例#1:
14.28

说明

如果你用比较复杂的方法AC了,请想一想有没有更加简便的方法。

本题来自URAL1020,翻译来自NOCOW。

所有的圆弧合起来一定是一个圆。

两点间距离公式:

代码实现:

 1 #include
 2 #include
 3 using namespace std;
 4 int n;
 5 double r,l,x[110],y[110];
 6 const double pi=3.1415926;
 7 int main(){
 8     scanf("%d%lf",&n,&r);
 9     l+=2*pi*r;
10     for(int i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]);
11     x[n+1]=x[1],y[n+1]=y[1];
12     for(int i=1;i<=n;i++)
13     l+=sqrt((x[i]-x[i+1])*(x[i]-x[i+1])+(y[i]-y[i+1])*(y[i]-y[i+1]));
14     printf("%.2lf",l);
15     return 0;
16 }

我自己打的开方函数居然只过了一半的点。

题目来源:洛谷

转载于:https://www.cnblogs.com/J-william/p/6305863.html

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录