背景
平面上有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;
}