Pagini recente » Cod sursa (job #1037244) | Cod sursa (job #2696584) | Cod sursa (job #1713853) | Cod sursa (job #582000) | Cod sursa (job #1617358)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 100009;
const int kmax = 109;
const int mod = 30211;
int d[nmax][kmax][2];
int n , k , i , j , t;
char s[nmax];
int main()
{
freopen("carry.in" , "r" , stdin);
freopen("carry.out" , "w" , stdout);
scanf("%d" , &n);
scanf("%d\n" , &k);
gets(s + 1);
for (i = 1 ; i <= n / 2 ; ++i)
swap(s[i] , s[n - i + 1]);
t = s[1] - '0';
d[1][0][0] = 10 - t;
d[1][0][1] = t;
for (i = 2 ; i <= n ; ++i)
{
t = s[i] - '0';
for (j = 0 ; j <= i ; ++j)
{
d[i][j][0] += d[i - 1][j][0] * (10 - t);
d[i][j][0] %= mod;
d[i][j][1] += d[i - 1][j][0] * t;
d[i][j][1] %= mod;
if (1 <= j)
{
d[i][j][0] += d[i - 1][j - 1][1] * (10 - t - 1);
d[i][j][0] %= mod;
d[i][j][1] += d[i - 1][j - 1][1] * (t + 1);
d[i][j][1] %= mod;
}
}
}
d[n][k][0] += d[n][k - 1][1];
d[n][k][0] %= mod;
printf("%d\n" , d[n][k][0]);
return 0;
}