[计蒜客 41302]K Sum

题目链接

一看数据范围,显然本题复杂度和\(k\)没啥关系,只可能跟\(n\)有关系,注意到\(n \leq 10^9\),考虑杜教筛。

但是第一步得先推式子。

\[f_n(k) = \sum_{l_1 = 1}^{n} \sum_{l_2 = 1}^{n} ... \sum_{l_k = 1}^{n} (\gcd(l_1,l_2...l_k))^2 \]

首先枚举gcd

\[= \sum_{l_1 = 1}^{n} \sum_{l_2 = 1}^{n} ... \sum_{l_k = 1}^{n} \sum_{d = 1}^n d^2 [\gcd(l_1,l_2...l_k) == d] \]

然后把\(d\)提到前面

\[= \sum_{d = 1}^n d^2 \sum_{l_1 = 1}^{\lfloor \frac{n}{d} \rfloor} \sum_{l_2 = 1}^{\lfloor \frac{n}{d} \rfloor} ... \sum_{l_k = 1}^{\lfloor \frac{n}{d} \rfloor}[\gcd(l_1,l_2...l_k) == 1] \]

然后换出\(\mu\)

\[= \sum_{d = 1}^n d^2 \sum_{l_1 = 1}^{\lfloor \frac{n}{d} \rfloor} \sum_{l_2 = 1}^{\lfloor \frac{n}{d} \rfloor} ... \sum_{l_k = 1}^{\lfloor \frac{n}{d} \rfloor} \sum_{p | gcd(l_1,l_2...l_k)} \mu(p) \]

\[= \sum_{d = 1}^n d^2 \sum_{p=1}^{\lfloor \frac{n}{d} \rfloor} \mu(p) \sum_{l_1 = 1}^{\lfloor \frac{n}{dp} \rfloor} \sum_{l_2 = 1}^{\lfloor \frac{n}{dp} \rfloor} ... \sum_{l_k = 1}^{\lfloor \frac{n}{dp} \rfloor} \]

\[= \sum_{d = 1}^n d^2 \sum_{p=1}^{\lfloor \frac{n}{d} \rfloor} \mu(p) \lfloor \frac{n}{dp} \rfloor^k \]

\(T=dp\),再交换一波求和顺序

\[= \sum_{T = 1}^n \lfloor \frac{n}{T} \rfloor^k \sum_{d|T}(\frac{T}{d})^2 \mu(d) \]

我们注意到式子的右边只和\(T\)的取值有关,而和\(k\)无关,不妨设\(g(T) = \sum_{d|T}(\frac{T}{d})^2 \mu(d)\)

那么答案要求前缀和,就可以写成:

\[\sum_{i=2}^k f_n(k) \]

\[= \sum_{i=2}^k \sum_{T = 1}^n \lfloor \frac{n}{T} \rfloor^k g(T) \]

\[= \sum_{T = 1}^n g(T) \sum_{i=2}^k \lfloor \frac{n}{T} \rfloor^k \]

右边显然是个等比数列求和,直接套公式\(O(1)\)计算,现在问题是左边\(g(T)\)的前缀和。

考虑到复杂度,只能杜教筛处理,首先按照套路式:

\[h(1)S(n) = \sum_{i=1}^{n} (h*g)(i) - \sum_{d=2}^{n} h(d) S(\lfloor \frac{n}{d} \rfloor) \]

\[g(n)=(id^2 * \mu)(n) \]

不难想到当\(h\)函数为\(h(n)=1\)时,可以得到比较合适的式子:

\[S(n) = \sum_{i=1}^n i^2 - \sum_{d=2}^n S(\lfloor \frac{n}{d} \rfloor) \]

\[S(n) = \frac{n(n+1)(2n+1)}{6} - \sum_{d=2}^n S(\lfloor \frac{n}{d} \rfloor) \]

杜教筛就完事了。

综上,可以\(O(n^{\frac{2}{3}})\)通过本题。

posted @ 2020-03-15 20:11  锦依卫Lijilai  阅读(113)  评论(0编辑  收藏  举报