题意
给一个
N
位的可能有前导
解法
对于询问
[l,r]
,我们要求的相当于
∑i=lr∑j=ir[(∑k=ijs[k]∗10j−k)modP=0]
=∑i=lr∑j=ir[(10j∗∑k=ijs[k]∗10−k)modP=0]
因为题目保证了 P 为质数,所以当
原式
=∑i=lr∑j=ir[(sum[j]−sum[i−1])modP=0]
=∑i=lr∑j=ir[(sum[j]=sum[i−1])]
对于多组询问,这就是一个经典的莫队了。将 sum 数组离散化,开一个桶记录一下 sum[i] 这个数值已经出现了多少次,移动左右端点时更新一下就行了。
而当 P=2 或 P=5 时,答案比较好推,这里就不赘述了。
注意可能爆 long long