[2166]多角形の面積


コード#コード#
#include <iostream>
using namespace std;
#include <algorithm>
#include <cmath>
double x[10001];
double y[10001];
double area[10001];

int main(void)
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> x[i] >> y[i];
    }
    for (int i = 0; i < n - 2; i++)
    {
        area[i] = ((x[0] - x[i + 1]) * (y[0] - y[i + 2]) - (x[0] - x[i + 2]) * (y[0] - y[i + 1])) / 2.0;
    }
    double sum = 0.0;

    for (int i = 0; i < n - 2; i++)
    {
        sum += area[i];
    }
    cout.precision(1);
    cout << fixed;
    cout << abs(sum);
    return 0;
}
質問へのアクセス
多角形を三角形に割る.
三角形->靴紐で整理する.
解決策
  • x,y input,
  • 各三角形の幅を求める
  • さらに
  • 出力
  • を加算
    混同点
  • x、yの先頭はintです.x,yが大きな数字の場合、オーバーフローが発生し、
  • が二重精度で修復される.
    最後に
  • absをします.私はすべての区域に対してすべてabsをして、考えて、すべての和を求めて、それから全体はすべてabsをして、ほほほ...

  • クレイジーだね、、、