有时候要求前 n n n 个:
暴力整除分块是 O ( n n ) O(n\sqrt n) O(nn ) 的,但可以线性预处理
首先我们让 i i i 取遍 0 到正无穷,考虑差分。
思考 n − 1 n-1 n−1 变成 n n n,哪些 i i i 会发生变化。只有 n n n 的因数,所以差分出来其实就是 n n n 的因数个数。这个可以线性筛 O ( n ) O(n) O(n) 预处理。
然后再做个前缀和就还原成原数组了。
有时候要求前 n n n 个:
暴力整除分块是 O ( n n ) O(n\sqrt n) O(nn ) 的,但可以线性预处理
首先我们让 i i i 取遍 0 到正无穷,考虑差分。
思考 n − 1 n-1 n−1 变成 n n n,哪些 i i i 会发生变化。只有 n n n 的因数,所以差分出来其实就是 n n n 的因数个数。这个可以线性筛 O ( n ) O(n) O(n) 预处理。
然后再做个前缀和就还原成原数组了。