BZOJ4421 : [Cerc2015] Digit Division

Claris發表於2016-03-08

如果兩個相鄰的串可行,那麼它們合併後一定可行,所以求出所有可行的串的個數$t$,則$ans=2^{t-1}$。

注意特判整個串不可行的情況,這個時候答案為0。

 

#include<cstdio>
int n,m,i,t,ans;char a[300010];
int main(){
  for(scanf("%d%d%s",&n,&m,a);i<n;i++){
    t=(t*10+a[i]-'0')%m;
    if(!t)if(!ans)ans=1;else ans=ans*2%1000000007;
  }
  return printf("%d",t?0:ans),0;
}