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

来源:互联网 发布:土木转金融 知乎 编辑:程序博客网 时间:2024/05/20 10:20

找出所有modm=0的区间的个数,再每两个区间之间都可以分开这个串
假设区间数为n最后答案就是

Cn10+Cn11+...Cn1n1=2n1
最后特判一下有没有解

#include<bits/stdc++.h>#define p 1000000007using 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);}
0 0
原创粉丝点击