绕钉子的长绳子

题目背景

平面上有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<cmath>
 2 #include<cstdio>
 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值