AT_arc018_2 [ARC018B] 格子点と整数
题目描述
诸君,我喜欢整数。
我喜欢格点。
我喜欢面积。
我喜欢三角形。
我非常喜欢所有顶点都在格点上的、面积为整数的三角形。
当我看到一组格点,数一数从中任选 $3$ 个点能组成多少个面积为整数的三角形时,我的心情会变得非常愉快。
虽然心情愉快,但当格点数量很多时,数起来就很麻烦。
希望身为优秀程序员的你,能替我数一数。
给定 $N$ 个格点,请你编写一个程序,统计从中任选 $3$ 个点能组成多少个面积为正整数的三角形。面积为 $0$ 的三角形不算三角形!
顺便一提,格点指的是坐标平面上 $x$ 和 $y$ 都是整数的点 $(x, y)$。
输入通过标准输入按以下格式给出。
> $N$
> $x_1$ $y_1$
> $x_2$ $y_2$
> $\vdots$
> $x_N$ $y_N$
- 第 $1$ 行给出格点的个数 $N$,满足 $3 \leq N \leq 100$。
- 接下来的 $N$ 行,每行给出两个用空格分隔的整数 $(x_i, y_i)$,表示第 $i$ 个格点的位置,$1 \leq x_i, y_i \leq 10^9$。不会有重复的格点(即 $i \neq j$ 时 $(x_i, y_i) \neq (x_j, y_j)$)。
请输出从 $N$ 个格点中任选 $3$ 个点,能组成面积为正整数的三角形的个数。
注意,输出最后要换行。
例如:
```
3
1 1
1 2
3 1
```
输出:
```
1
```
只有一个三角形 $(1,1),(1,2),(3,1)$,面积为 $1$。
```
3
1 1
1 2
2 1
```
输出:
```
0
```
三角形 $(1,1),(1,2),(2,1)$ 的面积为 $0.5$,不是整数。除此之外无法组成其他三角形。
```
3
1 1
2 2
3 3
```
输出:
```
0
```
三个点共线,无法组成三角形。
```
8
3 1
4 1
5 9
2 6
5 3
5 8
9 7
9 3
```
输出:
```
38
```
输入格式
第一行包含一个整数 $N$,表示格点的数量。
接下来的 $N$ 行,每行包含两个整数 $x_i$ 和 $y_i$,表示第 $i$ 个格点的坐标。
输出格式
输出一个整数,表示能组成面积为正整数的三角形的个数。
输出末尾需换行。
说明/提示
- $3 \leq N \leq 100$
- $1 \leq x_i, y_i \leq 10^9$
- 不会有重复的格点。
- 三角形面积为 $0$ 的情况不计入答案。
由 ChatGPT 4.1 翻译