Posts 2166 areaOfPolygon
Post
Cancel

2166 areaOfPolygon

2166 areaOfPolygon

알고리즘(기하학)

1
1. 사선정리 사용

구현법

1
2
1. 최대 4000000000000이 나올 수 있으므로, int대신 long long, float은 쓰지말고 double로 통일 시킨다.
2. double은 최대 15자리수를 표현가능하므로, 위 값도 충분히 들어갈 수 있다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <cstdio>
#include <cmath>
#define MAX_POINT 10000

using namespace std;

typedef struct Point {
	long long x;
	long long y;
} Point;

Point point[MAX_POINT];
int numOfPoint;

double getAreaOfPolygon();

int main() {
	cin >> numOfPoint;
	for (int i = 0; i < numOfPoint; i++)
		cin >> point[i].x >> point[i].y;

	printf("%.1f", getAreaOfPolygon());
}

double getAreaOfPolygon() {
	double area = 0;

	for (int i = 0; i < numOfPoint - 1; i++)
		area += ((point[i].x * point[i + 1].y) - (point[i + 1].x * point[i].y));
	area += (point[numOfPoint - 1].x * point[0].y) - (point[0].x * point[numOfPoint - 1].y);
	area = area < 0 ? (-1) * area : area;
	return area /= 2;
}

This post is licensed under CC BY 4.0 by the author.

2151 거울설치

2186 문자판

Comments powered by Disqus.