Pagini recente » Cod sursa (job #3323607) | Borderou de evaluare (job #3318961) | Cod sursa (job #3330830) | Cod sursa (job #3333122) | Cod sursa (job #3315968)
#include <fstream>
#include <cstring>
#define mod 30103
#define nmax 201
using namespace std;
ifstream cin("diviz.in");
ofstream cout("diviz.out");
int n,k,a,b,dp[2][nmax][101],sol,t;
string s;
int main()
{
cin>>k>>a>>b>>s;
n=s.size();
for(int i=1;i<=n;i++){
for(int r=0;r<k;r++)
dp[t][1][r]=(dp[1-t][1][r]||(r==(s[i-1]-'0')%k));
for(int j=2;j<=min(i,b);j++){
if(j!=i)
for(int r=0;r<k;r++)
dp[t][j][r]=dp[1-t][j][r];
else
for(int r=0;r<k;r++)
dp[t][j][r]=0;
int rest=(s[i-1]-'0')%k;
for(int r=0;r<k;r++)
if(!(j==2&&(r*10+rest)%k==0))
dp[t][j][(r*10+rest)%k]=(dp[t][j][(r*10+rest)%k]+dp[1-t][j-1][r])%mod;
}
t=1-t;
}
for(int i=a;i<=b;i++)
sol=(sol+dp[1-t][i][0])%mod;
cout<<sol;
return 0;
}