AGC022 B GCD Sequence
問題の概要
Nが与えられたとき、サイズN、各要素が30000以下の、以下のような数列を1つ求めよ。
- 全ての要素は相異なる
- 全ての要素の が1
- 全要素の和を とするとき、全ての i に対して
制約
解法
まず最初に、 という条件は
と書き換えてよいことがわかります。
gcdが1という条件については、2と3を必ず選んでおけば達成できるので、あとは残りの要素を2の倍数や3の倍数から選んで、和 Sを6の倍数にできれば達成できます。
30000以下の正整数30000個の中から最大20000個を選ぶというのは、かなり個数が多いですが、「2の倍数または3の倍数」は 1以上30000以下の整数のうち 20000個あるので、わりと達成できそうです。
難しかったら5の倍数も入れて、Sを30の倍数にすればよさそう。
ただ、この解法だと、細部をつめて実装するのが、そこそこ大変そうです。
考え続けていたら、以下の解が思い浮かびました。
数列の要素として、以下のように2個ずつのペアを選ぶ。
が偶数なら、このようなペアを選んで要素数が
になったら終了。
が奇数なら、このようなペアを選んで要素数を
にした後、「15000」を要素として追加。
こうすれば、和が15000の倍数になり、条件を満たします。