Welcome to CKOJ !!!!
提交: 155 解决: 44
[ 提交][ 状态][ 讨论版]
问题 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