# Good Sequences (opens new window)
# Problem
Squirrel Liss is interested in sequences.
She also has preferences of integers.
She thinks n integers a1, a2, ..., an are good.
Now she is interested in good sequences.
A sequence x1, x2, ..., xk is called good if it satisfies the following three conditions:
- The sequence is strictly increasing, i.e. xi < xi + 1 for each i (1 ≤ i ≤ k - 1).
- No two adjacent elements are coprime, i.e. gcd(xi, xi + 1) > 1 for each i (1 ≤ i ≤ k - 1) (where gcd(p, q) denotes the greatest common divisor of the integers p and q).
- All elements of the sequence are good integers.
Find the length of the longest good sequence.
# 愚直DP解
- dp[i] := 自然数iを最後に使った時のgood sequenceの最大長
- この時, 隣接する2要素についてgcdを求める必要がある
- gcd(i,j)で, O(N^2 * logn)
- TLEですね
# 想定DP解
- dp[i] := 自然数iを最後に使った時のgood sequenceの最大長
- newdp[k] := kを約数にもつような, 自然数iに対するdp[i]の最大値
- i = k*n
- dp[k]を計算する時
- kがiの倍数であるようなiに対してnewdp[i]の最大値をとって1を足す
- newdp[k]の定義
- そのあと, newdp[i]をdp[k]の値で埋める
- kがiの倍数であるようなiに対してnewdp[i]の最大値をとって1を足す