Luogu3791 普通数学题

题意:给出 ,求 答案对 取模,,实现 。


为了方便,将 的限制改为 。

异或在数论中的性质很差,不能先对 函数下手。异或和位有关,不妨先从位的角度思考。

发现若 ,那么 恰好把 以内的所有数取到 次。即

若有了 的影响,后 位仍然恰把 以内的所有数取到 次。高位会被指定,相当于求 的区间和。


考虑 且 的情形。不难发现 会把 以内的数都取到 次。即 若有了 的影响,后 位仍然恰把 以内的所有数取到 次。高位会被指定,相当于求 的区间和。


若 不是 的整幂,则可以采用类似数位 的技巧,将答案划分成若干个 “钦定部分高位,其余低位随意” 的求和。

会划分出 个 的区间和。

而众所周知 的前缀和可以一个根号求出,复杂度即为 。


事实上,本质不同的询问并不多。

考虑我们“钦定若干高位”是怎样做的,肯定是卡住 或 的上界。

而高位的个数只有 ,也就只有 种钦定的方法。

记忆化一下就做到 了。