1. 程式人生 > >洛谷 P1513 繞釘子的長繩子

洛谷 P1513 繞釘子的長繩子

題目背景

平面上有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程式碼:
#include<bits/stdc++.h>
const double Pai = 2.1415926535;
using namespace std;
int i,n; double x[200],y[200],r,ans;
double js(double a,double b,double c,double d){
	return sqrt((a-b)*(a-b)+(c-d)*(c-d));
}
int main(){
	cin>>n>>r;
	ans=r*2*Pai;
	for (i=1;i<=n;i++) cin>>x[i]>>y[i];
	for (i=1;i<n;i++) ans+=js(x[i],x[i+1],y[i],y[i+1]);
	ans+=js(x[1],x[n],y[1],y[n]);
	printf("%.2lf",ans);
	return 0;
}

這道題就是讓你把總周長轉化為一個釘子的周長加上由釘子中心點圍成的多邊形的周長,想到就十分簡單了。

注意:

1.π 的精度(別隻是3.14)

2.js的引數是double(尷尬,WA了一次)