Pagini recente » Cod sursa (job #2449681) | Cod sursa (job #2134280) | Cod sursa (job #230736) | Cod sursa (job #2066371) | Cod sursa (job #6977)
Cod sursa(job #6977)
#include <stdio.h>
#include <ctype.h>
#define infinit 101
#define modul 30103
int n[201], k, a, b, c[201][101], sol, used[10][201][101];
int main()
{
freopen("diviz.in","r",stdin);
freopen("diviz.out","w",stdout);
int i, j, rest, temp;
char ch;
scanf("%d%d%d", &k, &a, &b);
while(!feof(stdin))
{
scanf(" %c ", &ch);
if(isdigit(ch))
{
n[++n[0]] = ch - '0';
}
}
c[0][0] = 1;
for(i = 1; i <= n[0]; ++i) // pe care il iau acum
{
if(n[i])
{
for(j = i; j > 0; --j) // cate am pus
{
for(rest = 0; rest < k; ++rest) // restul aluia de dinainte
{
temp = (rest * 10 + n[i]) % k;
c[j][temp] += c[j - 1][rest] - used[n[i]][j - 1][rest];
c[j][temp] %= modul;
used[n[i]][j - 1][rest] = c[j - 1][rest];
}
}
}
else
{
for(j = i; j > 1; --j) // cate am pus
{
for(rest = 0; rest < k; ++rest) // restul aluia de dinainte
{
temp = (rest * 10 + n[i]) % k;
c[j][temp] += c[j - 1][rest] - used[n[i]][j - 1][rest];
c[j][temp] %= modul;
used[n[i]][j - 1][rest] = c[j - 1][rest];
}
}
}
}
for(i = a; i <= b; ++i)
{
sol += c[i][0];
sol %= modul;
}
printf("%d", sol);
return 0;
}