DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Good Triangles

返回题目

题解

세 점이 모두 같은 색이라고 하자. AAA에서 BBB로 가는 벡터를 (a,b)(a,b)(a,b), AAA에서 CCC로 가는 벡터를 (c,d)(c,d)(c,d)라 하면, 같은 색 조건에 의해 a+ba+ba+b와 c+dc+dc+d는 모두 짝수이다. 따라서 a,ba,ba,b의 홀짝성이 같고, c,dc,dc,d의 홀짝성도 같다.

이때

W=∣ad−bc∣W=|ad-bc|W=∣ad−bc∣

이다. 위의 홀짝성 조건 때문에 ad−bcad-bcad−bc는 항상 짝수이다. WWW가 소수이려면 W=2W=2W=2이어야 한다.

이제 순서 있는 세 점 (A,B,C)(A,B,C)(A,B,C)를 센 뒤 마지막에 666으로 나누자. 벡터 u=(a,b)u=(a,b)u=(a,b)를 고정하고, 벡터 v=(c,d)v=(c,d)가

ad−bc=±2ad-bc=\pm 2ad−bc=±2

를 만족하는 경우를 센다.

g=gcd⁡(a,b)g=\gcd(a,b)g=gcd(a,b)라 하자. 방정식 ad−bc=±2ad-bc=\pm 2ad−bc=±2의 정수해가 존재하려면 ggg가 를 나누어야 한다. 확장 유클리드 알고리즘으로 하나의 해 를 구하면 모든 해는

(c,d)=(c0+agt, d0+bgt)(c,d)=\left(c_0+\frac{a}{g}t,\ d_0+\frac{b}{g}t\right)(c,d)=(c0​+g

꼴이다.

각 ttt에 대해 다음 조건을 만족해야 한다.

  • ccc와 ddd가 격자 안에서 가능한 벡터 범위에 들어간다.
  • c+dc+dc+d가 짝수이다.

조건을 만족하는 각 벡터쌍 (u,v)(u,v)(u,v)에 대해 시작점 AAA가 놓일 수 있는 개수는 세 점 A,A+u,A+vA,A+u,A+vA,A+u,A+v가 모두 격자 안에 들어가도록 하는 점의 개수이다. 이는 xx좌표와 좌표에서 각각 필요한 폭을 계산하여 얻을 수 있다.

이렇게 얻은 순서 있는 경우의 수를 모두 더한 뒤 666으로 나누면 정답이다.

Solution written by GPT5.5

v=
(c,d)
222
v0=(c0,d0)v_0=(c_0,d_0)v0​=(c0​,d0​)
a
​
t
,
 
d0​
+
gb​
t
)
x
yyy