简要题意:
给定 n , m n,m n,m,求:
∑ i = 1 n ∑ j = 1 m ( n mod i ) × ( m mod j ) , i ≠ j \sum_{i=1}^n \sum_{j=1}^m (n \space \text{mod} \space i) \times (m \space \text{mod} \space j) , i \not = j i=1∑nj=1∑m(n mod i)×(m mod j),i=j
n , m ≤ 1 0 9 n,m \leq 10^9 n,m≤109.
我们直接奔着 100 100 100 分的数据去吧,不要看部分分,部分分就没意思。
这个式子的瓶颈在于 n mod i n \space \text{mod} \space i n mod i 的展开问题。所以只需要用 n mod i = n − ⌊ n i ⌋ × i n \space \text{mod} \space i = n - \lfloor \frac{n}{i} \rfloor \times i n mod i=n−⌊in⌋×i ,然后灵活用多项式的拆开与合并,一波整除分块带走即可。
首先说好,这一次的推式子没有 莫比乌斯反演,也没有 奇怪的筛法,有的只是 多项式的灵活展开 与 整除分块。
于是我们开始推式子。
∑ i = 1 n ∑ j = 1 m ( n mod i ) × ( m mod j ) , i ≠ j \sum_{i=1}^n \sum_{j=1}^m (n \space \text{mod} \space i) \times (m \space \text{mod} \space j) , i \not = j i=1∑nj=1∑m(n mod i)×(m mod j),i=j
= ∑ i = 1 n ∑ j = 1 m ( n − ⌊ n i ⌋ × i ) × ( m − ⌊ m j ⌋ × j ) , i ≠ j = \sum_{i=1}^n \sum_{j=1}^m (n - \lfloor \frac{n}{i} \rfloor \times i) \times (m - \lfloor \frac{m}{j} \rfloor \times j) , i \not = j =i=1∑nj=1∑m(n−⌊in⌋×i)×(m−⌊jm⌋×j),i=j
= ∑ i = 1 n ( n − ⌊ n i ⌋ × i ) × ∑ j = 1 m ( m − ⌊ m j ⌋ × j ) , i ≠ j = \sum_{i=1}^n (n - \lfloor \frac{n}{i} \rfloor \times i) \times \sum_{j=1}^m (m - \lfloor \frac{m}{j} \rfloor \times j) , i \not = j =i=1∑n(n−⌊in⌋×i)×j=1∑m(m−⌊j
P2260模积和题解:整除分块求解

博客探讨了如何高效计算P2260题目中涉及的模积和问题,通过多项式展开和整除分块的方法,实现了O(n)的时间复杂度解决方案。详细介绍了计算过程,包括避免溢出的策略,并指出这种方法适用于100分的数据规模。
最低0.47元/天 解锁文章
288

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



