きろく

特筆すべき記録のまとめ

AtCoder Beginner Contest 145:D - Knight

問題

https://atcoder.jp/contests/abc145/tasks/abc145_d

解法

各移動で原点から x, y 座標合わせて 3 は増加するから,(X + Y) が 3 で割り切れないとき,答えは 0 通り.

そうでないとき,操作の回数 n は (X + Y) / 3 回であると分かる.n が偶数のとき,|X - Y| は偶数になり,n が奇数の時は奇数になる.このようにならない場合は答えは 0 通り.

2 種類の操作はそれぞれ (n - |X - Y|) / 2 回と (n + |X - Y|) / 2 回行われると分かるので,前者を用いて C(n, (n - |X - Y|) / 2) 通りが答えとなる.コンビネーション計算は逆元を使う必要がある.

解答

https://atcoder.jp/contests/abc145/submissions/9001104

f:id:babcs2035:20191218151709p:plain