Pagini recente » Cod sursa (job #1014350) | Cod sursa (job #1533756) | Cod sursa (job #1455537) | Cod sursa (job #60929) | Cod sursa (job #1221571)
#include <fstream>
#include <string>
using namespace std;
ifstream is("diviz.in");
ofstream os("diviz.out");
#define MOD 30103
int K,A,B,N,x;
int Ap[10][201], D[201][201][101];
string X,Nr;
int main()
{
is >> K >> A >> B;
Nr = "0";
is >> X;
Nr += X;
N = X.length();
for ( int i = 0; i <= N; ++i )
for ( int j = i+1; j <= N; ++j )
{
x = Nr[j] - '0';
if ( Ap[x][i+1] == 0)
Ap[x][i+1] = j;
}
int Sol(0);
for ( int i = 1; i <= 9; ++i )
{
if ( Ap[i][1] != 0 )
D[1][Ap[i][1]][i%K] = 1;
}
for ( int i = 1; i <= B; ++i )
{
for ( int j = i; j <= N; ++j )
{
if ( i >= A )
Sol += D[i][j][0];
if ( Sol >= MOD )
Sol %= MOD;
for ( int k = 0; k <= K; ++k )
{
if ( D[i][j][k] != 0)
for ( int p = 0; p <= 9; ++ p)
{
if ( Ap[p][j+1] != 0)
{
D[i+1][Ap[p][j+1]][(k*10+p)%K] += D[i][j][k];
if ( D[i+1][Ap[p][j+1]][(k*10+p)%K] >= MOD)
D[i+1][Ap[p][j+1]][(k*10+p)%K] %= MOD;
}
}
}
}
}
os << Sol;
is.close();
os.close();
}