繞釘子的長繩子

背景

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

發佈了46 篇原創文章 · 獲贊 2 · 訪問量 8065
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章