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 翻译