iは奇数}となる列が与えられる。元の列を復元せよ(Nを素因数分解せよ)。解法自体はソースコードみた方が早い。Nとなるまで割れるだけ割るだけ。これでいけるかを説明する。a_(n-2)まで求めてしまえば、a_nはa_n以外の全てでNを割ることで求めることができる。よって、a_(n-2)が最大どこになるかを考えればよい。a_(n-2)が一番大きくなるのは、a_(n-2)とa_(n-1)とa_nが全て一致するときである。a_(n-3)まで求めてしまえば、a_(n-1)はa_(n-1)以外の全てでNを割ることで求めることができる。よって、a_(n-3)が最大どこになるかを考えればよい。a_(n-3)が一番大きくなるのは、a_(n-3)とa_(n-2)とa_(n-1)とa_nが全て一致するときである。Nまで調べればよいことがわかる。計算量コードpythonでも間に合う(最大786ms)。(1)はてなブログをはじめよう!n_knuuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。