Pagini recente » Cod sursa (job #411007) | Cod sursa (job #1768773)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
const int maxn=205;
const int MOD=30103;
int K,A,B,N,sol;
int c[maxn][maxn][101],next[11][maxn];
char s[201];
int main()
{
int i,j,v[201];
f>>K>>A>>B;
f>>(s+1);
N=strlen(s+1);
for (i=1;i<=N;i++)
v[i]=s[i]-'0';
for (i=0;i<=9;i++)
for (j=N;j>=1;j--)
{
if (v[j]==i)
next[i][j]=j;
else next[i][j]=next[i][j+1];
}
for (i=0;i<=9;i++)
c[1][next[i][1]][i%K]=1;
for (i=1;i<=B;i++)
for (j=i;j<=B;j++)
{
for (int k=0;k<K;k++)
{
if (c[i][j][k]==0) continue;
for (int p=0;p<=9;p++)
if (next[p][j+1]!=0)
c[i+1][next[p][j+1]][(k*10+p)%K]=(c[i+1][next[p][j+1]][(k*10+p)%K]+c[i][j][k])%MOD;
}
if (i>=A)
if (c[i][j][0]!=0)
sol=(sol+c[i][j][0])%MOD;
}
g<<sol;
}