[CKOJ] ROUND 7 Problem A 多边形周长
题目描述
给你一堆(凸)多边形,要求计算每个多边形的周长
输入数据
- 第一行一个整数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>
#include <iomanip>
using namespace std;
double a[100010];
int main()
{
int N;
cin>>N;
while(N--)
{
int tn;
cin>>tn;
tn*=2;
for(int i=0;i<100010;i++)
a[i]=0;
for(int i=0;i<tn;i++)
{
cin>>a[i];
}
double ans=0,x,y;
for(int i=0;i<tn;i+=2)
{
if(i==tn-2)
{
x=a[i]-a[0];
y=a[i+1]-a[1];
}
else
{
x=a[i]-a[i+2];
y=a[i+1]-a[i+3];
}
ans+=sqrt(x*x+y*y);
}
cout<<fixed<<setprecision(12)<<ans<<endl;
}
return 0;
}