問題 A: 多邊形周長
時間限制: 1 Sec 內存限制: 128 MB Special Judge提交: 155 解決: 44
[提交][狀態][討論版]
題目描述
給你一堆(凸)多邊形,要求計算每個多邊形的周長
輸入數據
- 第一行一個整數T表示數據組數
- 接下來T組數據格式如下
- 第一行一個整數n表示(凸)多邊形頂點數
- 接下來n行每行兩個小數表示多邊形座標
- 所有點保證按逆時針順序給出
輸出數據
- T行,每行一個小數表示對應多邊形的周長
- 誤差應控制在1e-6以內
樣例輸入
- 1
- 3
- 2 4
- 4 4
- 3 2
樣例輸出
- 6.472135955000
輸入
輸出
提示
對於100%的數據,保證T<=100,3<=n<=233
#include<iostream>
#include<cmath>
#define maxn 235
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
double sum=0;
int n;
cin>>n;
double a[maxn][2];
for(int i=1;i<=n;i++)
{
for(int j=0;j<2;j++)
cin>>a[i][j];
}
for(int i=1;i<=n;i++)
{
if(a[i][0]==a[i+1][0])
sum=sum+abs(a[i][1]-a[i+1][1]);
else if(a[i][1]==a[i+1][1])
sum=sum+abs(a[i][0]-a[i+1][0]);
else if(i==n)
sum=sum+sqrt((a[i][1]-a[1][1])*(a[i][1]-a[1][1])+(a[i][0]-a[1][0])*(a[i][0]-a[1][0]));
else
sum=sum+sqrt((a[i][1]-a[i+1][1])*(a[i][1]-a[i+1][1])+(a[i][0]-a[i+1][0])*(a[i][0]-a[i+1][0]));
// cout<<i<<endl;
}
printf("%.12f\n",sum);
}
}
//1
//3
//2 4
//4 4
//3 2