您的位置:首页 > 其它

4421: [Cerc2015] Digit Division|组合数学

2016-03-09 10:27 246 查看
找出所有modm=0的区间的个数,再每两个区间之间都可以分开这个串

假设区间数为n最后答案就是Cn−10+Cn−11+...Cn−1n−1=2n−1最后特判一下有没有解

#include<bits/stdc++.h>
#define p 1000000007
using namespace std;
char s[300001];
int n,m,ans,now;
int main()
{
scanf("%d%d%s",&n,&m,s);
for(int i=0;i<n;i++)
{
now=(now*10+s[i]-'0')%m;
if(!now)ans=(ans==0?1:ans*2%p);
}
now?puts("0"):printf("%d",ans);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  组合数学