Pagini recente » Cod sursa (job #1188565) | Cod sursa (job #1019526) | Cod sursa (job #717198) | Cod sursa (job #2812526) | Cod sursa (job #2225418)
#include <bits/stdc++.h>
#define N 205
#define K 105
#define MOD 30103
using namespace std;
ifstream fin("diviz.in") ;
ofstream fout("diviz.out") ;
int dp[N][K][N] , first[15][N] ;
string sir ;
int main()
{
int k , a , b , n , i , j , ii , cf , sol = 0 ;
fin >> k >> a >> b ;
fin >> sir ;
sir = "0"+sir ;
n = sir.size()-1 ;
for ( i = n ; i >= 1 ; i-- )
{
for ( j = 0 ; j <= 9 ; j++ )
{
if ( j == sir[i] - '0' )
first[j][i] = i ;
else
first[j][i] = first[j][i+1] ;
}
}
for ( i = 1 ; i <= 9 ; i++ )
{
dp[1][i%k][first[i][1]] = 1 ;
if ( a == 1 && i % k == 0)
sol++ ;
}
for ( i = 1 ; i <= n ; i++ )
{
for ( j = 0 ; j < k ; j++ )
{
for ( ii = 1 ; ii <= n ; ii++ )
{
for ( cf = 0 ; cf <= 9 ; cf++ )
{
if ( first[cf][ii+1] != 0 )
dp[i+1][(j*10+cf)%k][first[cf][ii+1]] = (dp[i][j][ii] + dp[i+1][(j*10+cf)%k][first[cf][ii+1]] )%MOD ;
if ( i >= a-1 && i < b && first[cf][ii+1] != 0 && (j*10+cf)%k == 0 )
sol = ( dp[i+1][(j*10+cf)%k][first[cf][ii+1]] + sol ) % MOD ;
}
}
}
}
fout << sol ;
}