打卡题进阶版。
在评价题目中看见很多人用了“结论题”这个标签,自习想想也对,赛后讲解没懂,同学给我讲的时候我很懵,突然会了后感觉这题没这么难,我现在在写题解,除了直接写做法好像写不出来什么思考过程。
把题目要求的变形一下,定义数组 为前缀和,那么题目会变成这样(注意从
开始):
我们可以发现,这是一个关于 的函数。
观察到模数是 的整数次幂,我们直接建立
个树状数组大小分别为
,第
个树状数组维护
的后
位组成的桶子。
对于答案中的每一位,我们可以在对应的桶子中计算与 的差恰好在当前为是
的数的个数即可。
具体一点:
代码不是特别难写(相比 I)。