如果兩個相鄰的串可行,那麼它們合併後一定可行,所以求出所有可行的串的個數$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; }