DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

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