Задача e-olymp 60.
Тест на tryHaxe.
Условие задачи
Заданы координаты [latex] n [/latex] последовательных вершин многоугольника. Определить его площадь.
Входные данные
Первая строка содержит количество вершин многоугольника [latex] n [/latex]. В следующих [latex] n [/latex] строках через пробел заданы целочисленные координаты его последовательных вершин [latex] x_i, y_i. [/latex] Известно, что [latex] 3≤n≤1000,−1000≤x[i],y[i]≤1000.[/latex]
Выходные данные:
Площадь многоугольника [latex] S [/latex].
Тесты
Входные данные | Выходные данные |
---|---|
3, (0, 0), (0, 2), (2, 0) | 2 |
4, (-1000, 500), (-500, 1000), (2, 10), (35, 60) | 339865 |
5, (13, -92), (44, 0), (-800, 30), (27, 2), (1, 2) | 1446.000 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Test { static function main() { var n, n1, x1, x2, y1, y2, x, y; var sum = 0.0; n = Std.parseInt(Sys.stdin().readLine()); x = Std.parseInt(Sys.stdin().readLine()); y = Std.parseInt(Sys.stdin().readLine()); x1 = x; y1 = y; for (i in 0...n) { x2 = Std.parseInt(Sys.stdin().readLine()); y2 = Std.parseInt(Sys.stdin().readLine()); sum = sum + (x1 + x2) * (y2 - y1); x1 = x2; y1 = y2; } sum = sum + (x + x2) * (y - y2); trace(Math.abs(sum) / 2); } } |
Для подсчёта площади необходима специальная формула которую можно найти тут а так же некоторое её обоснование.