|
|
|
@ -23,6 +23,8 @@ $1≤n,k≤10^9$
|
|
|
|
|
7
|
|
|
|
|
```
|
|
|
|
|
### 二、暴力作法
|
|
|
|
|
> **注**:暴力作法用于骗分+理解题意
|
|
|
|
|
|
|
|
|
|
```cpp {.line-numbers}
|
|
|
|
|
#include <bits/stdc++.h>
|
|
|
|
|
using namespace std;
|
|
|
|
@ -42,14 +44,14 @@ signed main() {
|
|
|
|
|
|
|
|
|
|
我们先研究一下如下的序列有哪些特点,再结合本题实际给出解题思路:
|
|
|
|
|
|
|
|
|
|
$$\large \displaystyle f(i)=\lfloor \frac{n}{i} \rfloor ~ (i \in [1,n])$$
|
|
|
|
|
$$\large \displaystyle f(i)=\lfloor \frac{k}{i} \rfloor ~ (i \in [1,n])$$
|
|
|
|
|
|
|
|
|
|
> **注**:本题要求的是$[1 \sim n]$之内所有数字对数字$k$ **取模**,我们偏偏不直接研究取模,而是在研究$[1 \sim n]$之内每个数字被$n$整除的结果。看来这个结果,与最终目标取模是有关系的,后面的题解中也会证明这一点。
|
|
|
|
|
> **注**:本题要求的是$[1 \sim n]$之内所有数字对数字$k$ **取模**,我们不直接研究取模,而是在研究$[1 \sim n]$之内每个数字被$k$整除的结果。这个结果,与 **取模** 是有关系的,后面的题解中也会证明这一点。
|
|
|
|
|
|
|
|
|
|
举个例子,$n = 5$,
|
|
|
|
|
$f(1)=5/1=5 \\
|
|
|
|
|
f(2)=5/2=2 \\
|
|
|
|
|
f(3)=5/3=1,f(4)=5/4=1,f(5)=5/5=1$
|
|
|
|
|
举个例子,$n = 4,k=5$,
|
|
|
|
|
$f(1)=k/1=5/1=5 \\
|
|
|
|
|
f(2)=k/2=5/2=2 \\
|
|
|
|
|
f(3)=k/3=5/3=1,f(4)=k/4=5/4=1,f(5)=k/5=5/5=1$
|
|
|
|
|
|
|
|
|
|
一字排开,得到$5,2,1,1,1$,相同的分到一个 **连续一样的数字段** 中,直观一点,写成:$[5],[2],[1,1,1]$
|
|
|
|
|
|
|
|
|
@ -59,7 +61,7 @@ f(3)=5/3=1,f(4)=5/4=1,f(5)=5/5=1$
|
|
|
|
|
### 四、本题题解
|
|
|
|
|
**题意**:给出$n,k$,求 $\displaystyle \sum_{i=1}^{n}k \ mod \ i$。
|
|
|
|
|
|
|
|
|
|
首先取模形式不好处理,根据取模运算定义做 **变换**:
|
|
|
|
|
首先取模形式不好处理,根据取模运算定义做 **等价变形**:
|
|
|
|
|
|
|
|
|
|
$$\large \sum_{i=1}^nk \ mod \ i=\sum_{i=1}^n(k-⌊\frac{k}{i}⌋\cdot i)$$
|
|
|
|
|
|
|
|
|
@ -69,7 +71,9 @@ $$\large n \cdot k-\sum_{i=1}^n ⌊\frac{k}{i}⌋\cdot i$$
|
|
|
|
|
|
|
|
|
|
我们发现重点在于求$\large \displaystyle \sum_{i=1}^n ⌊\frac{k}{i}⌋ \cdot i$。
|
|
|
|
|
|
|
|
|
|
发现$\large \displaystyle ⌊\frac{k}{i}⌋_{i=1}^n$的值 **呈块状分布**(即结果数组分成若干块,每块中值相等),是 **整除分块**。
|
|
|
|
|
发现$\large \underset{\text{i=1}}{\overset{\text{n}}{⌊\frac{k}{i}⌋}}$ 的值 **呈块状分布**(即结果数组分成若干块,每块中值相等),是 **整除分块**。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 1、 块内的累加和是多少?
|
|
|
|
|
首先 **一个块内部** 的答案显然是好求的,设块起点为 $l$,终点为 $r$,同时$\displaystyle \large ⌊\frac{k}{l}⌋=⌊\frac{k}{l+1}⌋=...=⌊\frac{k}{r}⌋$,
|
|
|
|
|