AtCoder Beginner Contest 249 D問題 Index Trio
問題
提出解答
解法1 atcoder.jp
解法2 atcoder.jp
問題の概要
長さ の整数列 が与えられる. 次を満たす整数のトリプル *1 を求めよ.
制約
解法
で にある の個数を表すとする. また, なので, 求めるべきは
である.
従って, を満たすトリプル を求める問題に帰着された. これには2つの解決方法がある. なお, とする.
解法1 ( を固定する)
と固定する. このとき, は の約数でなくてはならない. また, が決定されると, と一意的に決定する. の約数列挙は計算量 でできることから, とすることにより, 時間計算量 で求めることができた.
解法2 ( (または ) を固定する)
と固定する. このとき, それぞれに対して, であり, となるような はこれで全てである. よって, 各 に対して,
というトリプルを生成すれば良い.
計算量について, のときに取りうる の個数は高々 である. よって,
である.
以上から, 解法 1 では時間計算量 , 解法 では時間計算量 で求めることができた *2.