Pagini recente » Cod sursa (job #1784006) | Cod sursa (job #1994303) | Cod sursa (job #2803849) | Cod sursa (job #2781383) | Cod sursa (job #2351368)
#include <bits/stdc++.h>
#define Nmax 205
#define Kmax 105
#define md 30103
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int N;
int dp[2][Nmax][Kmax];
int K, A, B;
char C[Nmax];
int main()
{
fin >> K >> A >> B;
fin >> (C + 1);
N = strlen(C + 1);
dp[0][0][0] = 1;
int ans = 0;
for(int i = 1; i <= N; i++)
{
int dig = C[i] - '0';
memset(dp[i & 1], 0, sizeof(dp[i & 1]));
dp[i & 1][0][0] = 1;
for(int rem = 0; rem < K; rem++)
{
int newRem = (rem * 10 + dig) % K;
for(int k = 1 + (dig == 0); k <= min(i, B); k++)
dp[i & 1][newRem][k] = (dp[i & 1][newRem][k] + dp[1 - (i & 1)][newRem][k] + dp[1 - (i & 1)][rem][k - 1]) % md;
}
}
for(int i = A; i <= B; i++)
ans = (ans + dp[N & 1][0][i]) % md;
fout << ans << "\n";
return 0;
}