#include using namespace std; #include using namespace atcoder; using ll = long long; string M,D; using mint = modint; mint dp1[202][2][4000]; mint dp2[202][2][4000]; void solve(){ for(auto &i:M)i-='0'; for(auto &i:D)i-='0'; for(int i = 1;i=0) dp2[1][1][i-j+1] += dp1[M.size()][0][i] + dp1[M.size()][1][i]; } } for(int i = 0;i<4000;i++){ if(i-D[0]+1>=0){ dp2[1][0][i-D[0]+1] += dp1[M.size()][0][i] + dp1[M.size()][1][i]; } } for(int i = 1;i=0){ dp2[i+1][1][k-j] += dp2[i][1][k]; } } for(int j = 0;j=0){ dp2[i+1][1][k-j] += dp2[i][0][k]; } } if(k-D[i]>=0){ dp2[i+1][0][k-D[i]] += dp2[i][0][k]; } } } mint ans = dp2[D.size()][0][2000] + dp2[D.size()][1][2000]; cout<> M >> D; solve(); }