Pagini recente » Cod sursa (job #1961665) | Cod sursa (job #879871) | Cod sursa (job #194050) | Cod sursa (job #383599) | Cod sursa (job #7352)
Cod sursa(job #7352)
#include <stdio.h>
#include <string.h>
#define MN (202)
#define MK (102)
int oldc[MN][MK], newc[MN][MK];
int N, n[MN], K, L1, L2, X;
int main()
{
int i, j, k, l;
char ch;
freopen("diviz.in", "r", stdin);
freopen("diviz.out", "w", stdout);
scanf("%d %d %d ", &K, &L1, &L2);
for(N = 0; ; ++ N) {
scanf("%c", &ch);
if(ch != '\n')
n[N] = ch-'0';
else break;
}
/*
printf("%d %d %d\n", K, L1, L2);
for(i = 0; i < N; ++ i)
printf("%d ", n[i]); printf("\n");
*/
for(i = 0; i < N; ++ i) if(n[i])
oldc[i][n[i]%K] = 1;
/*
for(i = 0; i < N; ++ i, printf("\n")) for(k = 0; k < K; ++ k)
printf("%d ", oldc[i][k]);
*/
for(l = 2; l <= L2; ++ l) {
memset(newc, 0, sizeof(newc));
for(i = l-1; i < N; ++ i)
for(j = l-2; j < i; ++ j)
for(k = 0; k < K; ++ k)
newc[i][(k*10+n[i])%K] += oldc[j][k];
memcpy(oldc, newc, sizeof(oldc));
if(l >= L1) for(i = l-1; i < N; ++ i)
X += oldc[i][0];
}
printf("%d\n", X);
return 0;
}