莫队bzoj4542: [Hnoi2016]大数

Posted antiquality

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了莫队bzoj4542: [Hnoi2016]大数相关的知识,希望对你有一定的参考价值。

挺有意思的,可以仔细体味一下的题;看白了就是莫队板子。

Description

  小 B 有一个很大的数 S,长度达到了 N 位;这个数可以看成是一个串,它可能有前导 0,例如00009312345
。小B还有一个素数P。现在,小 B 提出了 M 个询问,每个询问求 S 的一个子串中有多少子串是 P 的倍数(0 也
是P 的倍数)。例如 S为0077时,其子串 007有6个子串:0,0,7,00,07,007;显然0077的子串007有6个子串都是素
数7的倍数。

Input

  第一行一个整数:P。第二行一个串:S。第三行一个整数:M。接下来M行,每行两个整数 fr,to,表示对S 的
子串S[fr…to]的一次询问。注意:S的最左端的数字的位置序号为 1;例如S为213567,则S[1]为 2,S[1…3]为 2
13。N,M<=100000,P为素数

Output

  输出M行,每行一个整数,第 i行是第 i个询问的答案。


题目分析

一个区间[l,r]产生贡献即$number_{i,j}equiv 0 ({ m mod} p)$.

按照常见套路来说,应该把区间拆成关于端点的式子。用$pre[i]$表示前$i$位在十进制下的数值,那么即$number_{i,j}=pre[j]-10^{j-i+1}*pre[i-1]$

以上是关于莫队bzoj4542: [Hnoi2016]大数的主要内容,如果未能解决你的问题,请参考以下文章

[BZOJ4542][HNOI2016]大数(莫队)

bzoj4542: [Hnoi2016]大数(莫队)

莫队bzoj4542: [Hnoi2016]大数

bzoj4542[Hnoi2016]大数 莫队算法

[BZOJ4542] [JZYZOJ2014][Hnoi2016] 大数(莫队+离散化)

bzoj5452[Hnoi2016]大数(莫队)