BZOJ4421[Cerc2015] Digit Division 动态规划

Posted CQzhangyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ4421[Cerc2015] Digit Division 动态规划相关的知识,希望对你有一定的参考价值。

【BZOJ4421】[Cerc2015] Digit Division

Description

给出一个数字串,现将其分成一个或多个子串,要求分出来的每个子串能Mod M等于0.
将方案数(mod 10^9+7)

Input

给出N,M,其中1<=N<=300 000,1<=M<=1000 000.
接下来一行,一个数字串,长度为N。

Output

如题 

Sample Input

4 2
1246

Sample Output

4

题解:如果一个前缀a%m==0,另一个长一点的前缀b%m==0,那么他们的中间部分(b-a*10^i)%m一定也是0,那就相当于我们每搜到一个前缀为0的位置就可以把这个串从这里切开,那么如果原串有n个前缀%m==0,显然除了最后一个必须切以外,每个前缀我们可以选择切或不切,答案就是2^n

不要比谁的代码长度短了!!!

#include <cstdio>
int n,m,sum,ans,j;
char str[300010];
int main()
{
	scanf("%d%d%s",&n,&m,str),ans=1;
	while(str[j])	sum=(sum*10+str[j]-‘0‘)%m,ans=(!sum&&str[j+1])?(ans*2%1000000007):ans,j++;
	printf("%d",(!sum)?ans:0);
	return 0;
}

以上是关于BZOJ4421[Cerc2015] Digit Division 动态规划的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 4421 Digit Division

[CERC2015]Digit Division

bzoj 4451 : [Cerc2015]Frightful Formula FFT

BZOJ4452[Cerc2015]Export Estimate 并查集

BZOJ 4451: [Cerc2015]Frightful Formula

「BZOJ 4451」「CERC 2015」Frightful Formula