天天看點

P1007繞釘子的長繩子

背景

平面上有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      
#include<iostream> 
#include<math.h>
#include<stdio.h>
using namespace std;
int main(){
	double pi=3.1415 ,r;
	int n,i,j;
	float x[110],y[110],sum=0;
	cin>>n>>r;
	if(n==1)
		sum=2*pi*r;
	else {
		for(i=1;i<=n;i++){
			cin>>x[i]>>y[i];
			if(i>1 && i<=n)
				sum+=sqrt(  (x[i-1]-x[i]) * (x[i-1]-x[i])  +  (y[i-1]-y[i]) *  (y[i-1]-y[i])  ) ;
		}
				sum+=sqrt(  (x[n]-x[1]) * (x[n]-x[1])  +  (y[n]-y[1]) *  (y[n]-y[1])  );
		
		sum+=2*pi*r;
	}
	printf("%.2f",sum);
	return 0;
}