背景
平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形。
现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计。
描述
求出绳子的长度
格式
输入格式
第1行两个数:整数N(1<=N<=100)和实数R。
接下来N行按逆时针顺序给出N个钉子中心的坐标
坐标的绝对值不超过100。
输出格式
一个数,绳子的长度,精确到小数点后2位。
样例1
样例输入1
4 1
0.0 0.0
2.0 0.0
2.0 2.0
0.0 2.0
样例输出1
14.28
限制
各个测试点1s
提示
如果你用比较复杂的方法AC了,请想一想有没有更加简便的方法。
来源
Ural
#include<stdio.h>
#include<math.h>
int main() {
int n,i;
float r;
scanf("%d %f",&n, &r);
float a[100][3] ;
for (i=1; i<=n; i++) {
scanf("%f %f",&a[i][0], &a[i][1]);
}
float ans=0;
for (i=1; i<n; i++) {
ans+=sqrt((a[i][0]-a[i+1][0])*(a[i][0]-a[i+1][0])+(a[i][1]-a[i+1][1])*(a[i][1]-a[i+1][1]));
//printf("ans1=%f\n",ans);
}
ans=ans+sqrt((a[n][0]-a[1][0])*(a[n][0]-a[1][0])+(a[n][1]-a[1][1])*(a[n][1]-a[1][1]))+2*r*3.14159;
//printf("ans2=%f\n",ans);
printf("%.2f\n",ans);
return 0;
}