[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;
}
原文地址:https://www.cnblogs.com/zeolim/p/12270776.html