<-- home

AtCoder ABC 162

https://atcoder.jp/contests/abc162

ABC162に参加したのでメモ。

A B C D E F
o o o o x x

A~Dは問題なく解けた。

D

なので、を全探索する方法は間に合わない。を全探索して条件を満たすの個数を効率よく計算する方針で解く。が与えられているとする。のとき、かつを満たすとなっているものを数えればいい。事前に累積和を求めておくことで、に含まれるBの個数はで求められる。同様にして、の場合もで計算できる。したがって、全体としてはで答えが求まる。

E

数列をうまく列挙して(代表的な要素を選ぶとかして)数えるという方針、つまり、という方向で考えていた。例えば、がすべて素数であるとき、互いに素であることは明らかなので、となる。素数がK以下にたくさんあれば、それ以外については全探索するとかして計算量を減らせるが、合成数より多いなんてことはないので、うまくいかない。時間ギリギリくらいで、の方向で考えると筋が良さそうということに気づいた。

のとき、これを満たすような数列は、からgを必ず含むようにして要素を選べばいいのだが、約数系包除に慣れておらず、うまく数え上げられなかった。

  • という方針で問題を考えている場合は、という方針も検討する