专栏文章

题解:P3791 普通数学题

P3791题解参与者 3已保存评论 3

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
3 条
当前快照
1 份
快照标识符
@mioqew0t
此快照首次捕获于
2025/12/02 23:27
3 个月前
此快照最后确认于
2025/12/02 23:27
3 个月前
查看原文

前言

在课上 @grass8cow 老师表演了 5min 切黑,可惜失败,被卡常了,好在卡了15min 后过去了 %%%

正文

简要题意

给定 n,m,xn,m,xi=0nj=0md(ijx)\sum\limits_{i=0}^{n}\sum\limits_{j=0}^{m} d(i \oplus j \oplus x)
d(i)d(i) 表示为 ii 的约数个数。
1n,m,x10101 \le n,m,x \le 10^{10}

解法

首先你会发现异或这个运算非常恶心,对于直接求约数十分困难。
不如考虑拆贡献!
对于每一个可能是出现的 ijxi \oplus j \oplus x,我们将它设为 pp,设它的出现次数为 KpK_p 设所有可能出现的 pp 的集合为 PP
那么问题的答案就变为 pPd(p)×Kp\sum _{p\in P} d(p) \times K_p
对于枚举异或运算可能会出现的数,我们很容易想到数位dp
我们因为 xx 是固定的,我们先不考虑它,然后将 iji \oplus j 拆成 iijj,再考虑朴素的从上往下 dp。
分别设后面 iijj 的后 x1x-1y1y-1 位顶着上限,而第 xxyy 位小于上限,则剩下的位置都可以随便填!
为了讨论方便,我们不妨定义一下 xxyy 的位置关系,xyx \le y
对于前 x1x-1 时,后面的部分,两个数都能随便取,有 2x1×2x1=4x12^{x-1} \times 2^{x-1} = 4^{x-1} 种情况,对于异或完之后这部分所有的 2x12^{x-1} 情况都能取到,所以每种数出现过 4x12x1=2x1\frac{4^{x-1}}{2^{x-1}}=2^{x-1} 次。
当在 xy1x \sim y-1 ii 是固定的,而 jj 随便取,有 1x1×2x1=2x11^{x-1} \times 2^{x-1} = 2^{x-1} 种情况,显然对于异或完还是能取到所有的 2x12^{x-1} 情况,所以每种数出现过 2x12x1=1\frac{2^{x-1}}{2^{x-1}}=1 次。
对于后面的只有一种情况,且仅出现 11 次。
最后还有个小尾巴,求 dd
dd 其实是幼儿园数学题,非常好求。
i=1nd(i)=i=1nj=1n(ji)=i=1nni\sum\limits_{i=1}^n d(i)=\sum\limits_{i=1}^n \sum\limits_{j=1}^n (j\mid i)=\sum\limits_{i=1}^n \lfloor\frac{n}{i}\rfloor
这个显然可以数论分块!
总复杂度 O(nlog2n)O(\sqrt{n} \log^2 n)
注意常数!小心不要像牛吃草老师被卡常!

评论

3 条评论,欢迎与作者交流。

正在加载评论...