Cod sursa(job #920955)

Utilizator misinoonisim necula misino Data 20 martie 2013 18:16:09
Problema Diviz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#define MOD 30103
#include<cstring>
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
int k,a1,c,j,kk,b1,i,sol,n,b[202][102],ne[202][102],a[11][202][102];
char s[222];
int main()
{
    f>>k>>a1>>b1>>(s+1);
    n=strlen(s+1);
    for(i=1;i<=n;++i)
    {
        c=s[i]-'0';
        for(j=b1;j;--j)
        for(kk=0;kk<k;++kk)
        b[j][kk]=a[c][j][kk];
        for(j=b1;j;--j)
        for(kk=0;kk<k;++kk)
        {
            a[c][j][(10*kk+c)%k]+=ne[j-1][kk];
            a[c][j][(10*kk+c)%k]%=MOD;
        }
        for(j=b1;j;--j)
        for(kk=0;kk<k;++kk)
        {
            a[c][j][kk]=(a[c][j][kk]+MOD-b[j][kk])%MOD;
            ne[j][kk]=(ne[j][kk]+a[c][j][kk]+MOD-b[j][kk])%MOD;
        }
        if(c)
        {
            if(a[c][1][c%k]==0)
            ++ne[1][c%k];
            a[c][1][c%k]=1;
        }
    }
    for(i=a1;i<=b1;++i)
    sol+=ne[i][0],sol%=MOD;
    g<<sol<<'\n';
    return 0;
}