如果对于 aia_iai 的每一项,都以 gcdgcdgcd 为间隔遍历 aja_jaj 求和,时间复杂度为 O(n2l2gcd)O(\frac{n^2l^2}{gcd})O(gcdn2l2) ,会超时。
应当首先把 aja_jaj 的隔 gcdgcdgcd 项和求出来(只需要求出前 gcdgcdgcd 项为首的隔 gcdgcdgcd 项和即可),然后在遍历 aia_iai 时,直接把刚刚求好的和拿过来乘就可以了。
这样求和的循环外层是 O(gcd)O(gcd)O(gcd) ,内层是 O(ljgcd)O( \frac{l_j}{gcd})O(gcdlj) ,求和总计是 O(l)O(l)O(l) ,总的复杂度只有 O(n2l)O(n^2l)O(n2l) ,可以AC。