鏈接:https://www.nowcoder.com/acm/contest/110/B
來源:牛客網
題目描述
為了讓所有選手都感到開心,Nowcoder練習賽總會包含一些非常基本的問題。 比如說:
按順時針或逆時針方向給你一個簡單的多邊形的頂點坐標,請回答此多邊形是順時針還是逆時針。
輸入描述:
輸入包含N + 1行。i
第一行包含一個整數N,表示簡單多邊形的頂點數。
在下面的N行中,第i行包含兩個整數x
,yi
,表示簡單多邊形中的第i個頂點的坐標。
輸出描述:
如果簡單多邊形按順時針順序給出,則在一行中輸出“clockwise”(不帶引號)。 否則,打印"counterclockwise''(不帶引號)。
示例1
輸入
3 0 0 1 0 0 1
輸出
counterclockwise
示例2
輸入
3 0 0 0 1 1 0
輸出
clockwise
備注:
3≤N≤30i
-1000≤x
,yi
≤1000
數據保證,這個簡單多邊形的面積不為零。

原地址 https://www.cnblogs.com/kyokuhuang/p/4250526.html
這是公式推導過程。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 typedef long long LL ; 7 int x1, x2, t1, y2; 8 int a[50], b[50]; 9 int main() { 10 int n; 11 scanf("%d", &n); 12 for (int i = 0 ; i < n ; i++) { 13 scanf("%d%d", &a[i], &b[i]); 14 } 15 double d = 0; 16 for(int i = 0; i < n - 1; i++) { 17 d += -0.5 * (b[i + 1] + b[i]) * (a[i + 1] - a[i]); 18 } 19 if(d > 0)cout << "counterclockwise" << endl; 20 else cout << "clockwise" << endl; 21 return 0; 22 }