AtCoder Regular Contest 114
冷えた
Not coprime (300点)
互いに素でないならばなにかしらの素数がgcdになれば最小になりそう.最小のを考えるとgcdが同じ素因数を2つ以上持つ必要はないので,50以下の各素数に対して,各がで割りきれるなら割り切れなくなるまでで割る.割った後,全部のlcmを取って出力とする.制約が小さいので64bit整数型で答えられる.各素数で割り切れるかどうかでbitset使ってorとってもいいかも
拙解 (C++17): Submission #20931367 - AtCoder Regular Contest 114
B - Special Subsets (400点)
関数は一般に組の集合として表せることを思い出すと,を頂点,を有向辺として考えられる.その有効グラフはすべての頂点の出次数が1なので,有向森+各弱連結成分につきサイクル1つ(いわゆる「なもりグラフ」)になる.そのサイクルが,条件を満たす部分集合の最小単位になる.そのため,サイクルが個あるとすると答えがになる.今回はサイクルの個数と弱連結成分の個数が同じなので,UnionFindで連結成分の個数を求めてを求めればいい.
拙解 (C++17):
Submission #20940731 - AtCoder Regular Contest 114
C - Sequence Scores (600点)
(ここからコンテスト中に解けなかった)
いわゆる主客転倒.操作の順番が入れ替わってもできる数列は変わらないので,操作は列ではなく集合として扱える.その集合をと書くと,
(以下,解法間違ってたので削除)
D以降
何もわからない