1 条题解

  • 0
    @ 2026-8-15 19:51:56

    我们需要求的是:

    $$S=\sum_{x=1}^m\sum_{i=1}^n\left(\left\lfloor\frac{a_i}{x}\right\rfloor+a_i~\mathrm{mod}~ x\right) $$

    其中的取模运算可以这样改写:

    $$a_i~\mathrm{mod}~ x=a_i-x\left\lfloor\frac{a_i}{x}\right\rfloor $$

    因此有:

    $$\begin{aligned}S&=\sum_{x=1}^m\sum_{i=1}^n\left(a_i+\left(1-x\right)\left\lfloor\frac{a_i}{x}\right\rfloor\right)\\ &=\sum_{i=1}^n\sum_{x=1}^m\left(a_i+\left(1-x\right)\left\lfloor\frac{a_i}{x}\right\rfloor\right)\\ &=\sum_{i=1}^n\left(m\cdot a_i+\sum_{x=1}^m\left(1-x\right)\left\lfloor\frac{a_i}{x}\right\rfloor\right)\end{aligned}$$

    由于 maim\ge a_i,而 x>aix>a_iaix=0\left\lfloor\frac{a_i}{x}\right\rfloor=0,因此实际上:

    $$\begin{aligned}S&=\sum_{i=1}^n\left(m\cdot a_i+\sum_{x=1}^{a_i}\left(1-x\right)\left\lfloor\frac{a_i}{x}\right\rfloor\right)\\&=\sum_{i=1}^n\left(m\cdot a_i+\sum_{x=1}^{a_i}\left\lfloor\frac{a_i}{x}\right\rfloor-\sum_{x=1}^{a_i}x\left\lfloor\frac{a_i}{x}\right\rfloor\right)\end{aligned} $$

    1ai1\sim a_i 的范围内共有 aix\left\lfloor\frac{a_i}{x}\right\rfloor 个数被 xx 整除,因此:

    $$\left\lfloor\frac{a_i}{x}\right\rfloor=\sum_{k=1}^{a_i}\left[x\mid k\right] $$

    那么有:

    $$\begin{aligned}\sum_{x=1}^{a_i}\left\lfloor\frac{a_i}{x}\right\rfloor&=\sum_{x=1}^{a_i}\sum_{k=1}^{a_i}\left[x\mid k\right]\\&=\sum_{k=1}^{a_i}\sum_{x=1}^{a_i}\left[x\mid k\right]\\&=\sum_{k=1}^{a_i}\tau\left(k\right)\end{aligned} $$

    这里 τ(k)\tau\left(k\right) 是因数个数函数,是一个常见的数论函数 。

    同样地,也有:

    $$\begin{aligned}\sum_{x=1}^{a_i}x\left\lfloor\frac{a_i}{x}\right\rfloor&=\sum_{x=1}^{a_i}\sum_{k=1}^{a_i}x\left[x\mid k\right]\\&=\sum_{k=1}^{a_i}\sum_{x=1}^{a_i}x\left[x\mid k\right]\\&=\sum_{k=1}^{a_i}\sigma\left(k\right)\end{aligned} $$

    这里 σ(k)\sigma\left(k\right) 是因数和函数,也是一个常见的数论函数 。

    那么我们需要求的就是:

    $$S=\sum_{i=1}^n\left(m\cdot a_i+\sum_{k=1}^{a_i}\tau\left(k\right)-\sum_{k=1}^{a_i}\sigma\left(k\right)\right) $$

    对于 11×1071\sim 1\times10^7 的正整数 NNk=1Nτ(k)\displaystyle\sum_{k=1}^{N}\tau\left(k\right)k=1Nσ(k)\displaystyle\sum_{k=1}^{N}\sigma\left(k\right) 可以通过筛法O(N)O(N) 的时间复杂度预处理获得。当然,对于 τ(n)\tau\left(n\right)σ(n)\sigma\left(n\right) 这两个特殊的数论函数的前缀和,也可以采用杜教筛O(N23)O(N^{\frac{2}{3}}) 的时间复杂度预处理获得(然而完全没必要)。

    对于本题,在预处理后可依据上面的公式以 O(n)O(n) 的时间复杂度计算出 SS 的值,也即本题的输出。

    然后就是卡常了

    • 1

    信息

    ID
    421
    时间
    3000ms
    内存
    512MiB
    难度
    9
    标签
    (无)
    递交数
    59
    已通过
    3
    上传者