E-Haitang and Math_2024牛客暑期多校训练营8 (nowcoder.com)
E题其实都可以想到朴素的对于 [ n − 108 , n ] [n-108,n] [n−108,n] 这个区间每个数去暴力分解因子,然后判断因子是否成立。
但是如果这样写复杂度将会是 O ( T × 108 × n × l o g n ) O(T\times 108 \times \sqrt n \times logn) O(T×108×n×logn) 显然不合法。那么我们想如何去优化呢。
对于枚举因子,其实我们很经常会分解出质因子,然后去质因子去暴力枚举选取的可能。
就可以把复杂度从原本的 O ( n ) → O ( n l o g n + d ( n ) ) O(\sqrt n) \rightarrow O(\frac{\sqrt n}{logn} + d(n)) O(n)→O(lognn+d(n)) , d ( n ) d(n) d(n) 表示因子函数。该量级差不多为 l o g n logn logn
然后如果带回去会发现现在变成 O ( T × 108 × ( n l o g n + d ( n ) × l o g n ) ) O(T\times 108 \times( \frac{\sqrt n}{logn} + d(n) \times logn)) O(T×108×(lognn


650

被折叠的 条评论
为什么被折叠?



