1 条题解
-
0
题意重述
我们需要计算:
其中 ,询问次数 。
第一步:公式推导
已知 。
所以:
$$S(n) = \sum_{i=1}^n \frac{i \cdot n}{\gcd(i, n)} = n \sum_{i=1}^n \frac{i}{\gcd(i, n)}. $$
第二步:按 分组
设 ,则 ,其中 ,且 。
于是:
因此:
$$S(n) = n \sum_{d \mid n} \sum_{\substack{1 \le k \le n/d \\ \gcd(k, n/d) = 1}} k. $$这里 取遍 的所有正因数。
第三步:简化内层求和
设 ,则内层求和为:
$$\sum_{\substack{1 \le k \le m \\ \gcd(k, m) = 1}} k. $$这是一个经典结论:小于等于 且与 互质的数的和等于 ,当 时成立;当 时,和为 ,公式同样适用(因为 ,,但整数求和是 ,所以需要单独处理)。
更精确地:
$$\sum_{\substack{1 \le k \le m \\ \gcd(k, m) = 1}} k = \begin{cases} 1 & m = 1, \\ \frac{m \cdot \varphi(m)}{2} & m \ge 2. \end{cases} $$对于 ,互质的数成对出现( 与 互质且和为 ),所以总共有 对,每对和 ,总和 。
第四步:代回原式
于是:
$$S(n) = n \sum_{d \mid n} f\left(\frac{n}{d}\right), $$其中
$$f(m) = \begin{cases} 1 & m = 1, \\ \frac{m \cdot \varphi(m)}{2} & m \ge 2. \end{cases} $$我们可以写成:
因为 和 都是 的因数,求和是对称的。
所以:
$$S(n) = n \left[ f(1) + \sum_{\substack{d \mid n \\ d \ge 2}} \frac{d \cdot \varphi(d)}{2} \right]. $$其中 。
因此:
$$S(n) = n \left( 1 + \frac{1}{2} \sum_{\substack{d \mid n \\ d \ge 2}} d \cdot \varphi(d) \right). $$令
则
注意:当 时,,所以 $g(n) = 1 + \sum_{d \mid n, d \ge 2} d \cdot \varphi(d)$。
因此 等价于上面的公式。
第五步:计算
我们要求:
这是一个积性函数,因为 是积性函数,且因子求和保持积性。
证明 是积性函数
- 是积性函数。
- 显然是积性函数。
- 两个积性函数的乘积是积性函数。
所以 是积性函数。
那么 是 的狄利克雷卷积 ,两个积性函数的卷积也是积性函数。
因此 是积性函数。
第六步:求 的表达式
因为 积性,只需计算 ,其中 是素数。
的因数有 。
所以:
已知 (当 ),。
所以:
- :。
- :。
因此:
这是一个几何级数:
$$\sum_{j=1}^k p^{2j} = \frac{p^{2(k+1)} - p^2}{p^2 - 1}, $$$$\sum_{j=1}^k p^{2j-1} = p \cdot \frac{p^{2k} - 1}{p^2 - 1}. $$所以:
$$g(p^k) = 1 + \frac{p^{2(k+1)} - p^2}{p^2 - 1} - p \cdot \frac{p^{2k} - 1}{p^2 - 1}. $$化简: 先通分 :
$$g(p^k) = \frac{(p^2 - 1) + p^{2(k+1)} - p^2 - p^{2k+1} + p}{p^2 - 1}. $$分子:$p^2 - 1 + p^{2k+2} - p^2 - p^{2k+1} + p = p^{2k+2} - p^{2k+1} + p - 1$。
提取 :
所以分子 = 。
因此:
$$g(p^k) = \frac{(p-1)(p^{2k+1} + 1)}{p^2 - 1} = \frac{p^{2k+1} + 1}{p + 1}. $$最终公式:
第七步:算法实现步骤
- 预处理 到 的所有 (欧拉函数)。
- 利用积性性质计算 :
- 对每个素数 ,计算 用上述公式。
- 由于 积性,可以用线性筛在 内求出所有 。
- 然后计算:
- 对于每个询问 ,直接输出 。
注意:结果可能很大,要对 取模吗?题目没说取模,但 , 最大大约在 级别,用
long long存即可(题目输出整数,应该不用取模)。
第八步:复杂度分析
- 预处理 和 :。
- 每个询问 。
- 总复杂度 ,可以应对 。
第九步:样例验证
$g(1) = \sum_{d|1} d \varphi(d) = 1 \cdot \varphi(1) = 1$。
。因数 :
- :
- : 。 。
因数 :
- :1
- : 。 。
符合样例输出。
总结
本题的关键步骤:
- 将 转化为 。
- 按 分组,利用互质数对的求和公式。
- 引入 ,并证明其积性。
- 推导 的封闭形式 。
- 用线性筛预处理 , 回答询问。
- 1
信息
- ID
- 5917
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者