CF1389E Calendar Ambiguity
Berland 年有 $m$ 月,每月 $d$ 天。一周有 $w$ 天。 若第 $x$ 月的第 $y$ 天和第 $y$ 月的第 $x$ 天是同一个星期,则称 $(x,y)$ 是一对。 求一年有几对。 $$ xd+y \equiv yd+x \pmod w $$ 即 $$ (x-y)(d-1) \equiv 0 \Rightarrow (x-y)(d-1) \in w\mathbb{Z} $$ 于是有 $$ y-x = \frac{wk}{\gcd(w,d-1)} $$ 又 $x < y \leqslant \min(m,d)$, int main() { ll ttt = rr(); while (ttt--) { ll m = rr(), d = rr(), w = rr(); ll g = w / gcd(w, d - 1); ll max_y = min(m, d) - 1; ll div = (max_y + 1) / g, mod = (max_y + 1) % g; ll sum = (div - 1) * div / 2 * g + mod * div; printf("%lld\n", sum); } return 0; }