Pagini recente » Cod sursa (job #2381425) | Cod sursa (job #954131) | Cod sursa (job #1795649) | Cod sursa (job #149644) | Cod sursa (job #1360338)
#include <fstream>
#include <cstring>
#define MOD 30103
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int k, A, B;
int v[210], lenght;
int D1[210][110], D2[210][110], D3[210][110][10];
char N[210];
void citire(){
fin >> k >> A >> B;
fin >> (N + 1);
lenght = strlen(N + 1);
for(int i = 1; i <= lenght; i ++)
{
v[i] = N[i] - '0';
}
}
void solve(){
D1[0][0] = 1;
D2[0][0] = 1;
for(int i = 1; i <= lenght; i ++)
{
for(int j = 1; j <= i; j ++)
{
for(int mod = 0; mod < k; mod ++)
{
if(v[i] == 0 && j == 1)
{
continue;
}
D2[j][mod] -= D3[j][mod][ v[i] ];
if(D2[j][mod] < 0)
{
D2[j][mod] += MOD;
}
D3[j][mod][ v[i] ] = 0;
}
}
for(int j = 1; j <= i; j ++)
{
if(v[i] == 0 && j == 1)
{
continue;
}
for(int mod = 0; mod < k; mod ++)
{
D2[j][(mod * 10 + v[i]) % k] = (D2[j][(mod * 10 + v[i]) % k] + D1[j - 1][mod]) % MOD;
//D2[j][(mod * 10 + v[i]) % k] %= MOD;
D3[j][(mod * 10 + v[i]) % k][ v[i] ] += D1[j - 1][mod];
D3[j][(mod * 10 + v[i]) % k][ v[i] ] %= MOD;
}
}
memcpy(D1, D2, sizeof(D1));
}
}
void afisare(){
int x = 0;
for(int i = A; i <= B; i ++)
{
x = (D1[i][0] + x) % MOD;
}
fout << x << '\n';
}
int main()
{
citire();
solve();
afisare();
return 0;
}