Pagini recente » Cod sursa (job #656290) | Cod sursa (job #2255907) | Cod sursa (job #131223) | Cod sursa (job #1691426) | Cod sursa (job #2645190)
#include <bits/stdc++.h>
#define MOD 30103
using namespace std;
int k,a,b,fr[2][205][105],n, nxt[105][10];
string v;
void sum(int &a, int b){
a += b;
if (a >= MOD) a -= MOD;
}
int main()
{
cin.sync_with_stdio(false);
freopen("diviz.in","r",stdin);
freopen("diviz.out","w",stdout);
cin >> k >> a >> b >> v;
n = v.size();
for (int i=n;i>=0;i--){
for (int j=0;j<=9;j++){
if (v[i] - '0' == j) nxt[i][j] = i;
else nxt[i][j] = (nxt[i+1][j] == 0 ? n+1 : nxt[i+1][j]);
}
}
int ans = 0;
for (int cif=1;cif<=9;cif++) fr[1][nxt[0][cif]][cif % k] = 1;
for (int nr=1;nr<=b;nr++){
for (int i=n;i>=0;i--){
for (int j=0;j<k;j++){
if (nr >= a && j==0){
sum (ans, fr[nr&1][i][j]);
}
// if (fr[nr&1][i][j]){
// cerr << nr << ' ' << i << ' ' << j << ' ' << ' ' << fr[nr&1][i][j] << '\n';
// }
for (int cif=0;cif<=9;cif++){
sum(fr[nr&1^1][nxt[i+1][cif]][(j * 10 + cif) % k], fr[nr&1][i][j]);
}
fr[nr&1][i][j] = 0;
}
}
}
cout << ans << '\n';
return 0;
}