[计蒜客 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}})通过本题。

猜你喜欢

转载自www.cnblogs.com/lijilai-oi/p/12499681.html