Cod sursa(job #1773917)

Utilizator ASTELOTudor Enescu ASTELO Data 8 octombrie 2016 12:58:26
Problema Diviz Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mod 30103
using namespace std;
struct eu{char vc[10],x;};
eu a[201][101];
char s[201];
int i,j,n,m,k,a1,b,v[201],q,s1;
int main ()
{
freopen("diviz.in","r",stdin);
freopen("diviz.out","w",stdout);
scanf("%d%d%d\n",&k,&a1,&b);
gets(s);
n=strlen(s);
for(i=0;i<n;i++)
    v[i+1]=s[i]-48;
for(i=0;i<n;i++)
    a[0][i].x=1;
for(q=1;q<=n;q++)
    {
    for(i=min(b-1,q-1);i>=1;i--)
        {
        for(j=0;j<k;j++)
            if(a[i][j].vc[v[q]]==0)
                {
                a[i+1][(j*10+v[q])%k].x+=a[i][j].x;
                a[i+1][(j*10+v[q])%k].vc[v[q]]+=a[i][j].x;
                a[i+1][(j*10+v[q])%k].x%=mod;
                a[i+1][(j*10+v[q])%k].vc[v[q]]%=mod;
                }
            else
                {
                a[i+1][(j*10+v[q])%k].x+=a[i][j].vc[v[q]];
                a[i+1][(j*10+v[q])%k].vc[v[q]]+=a[i][j].vc[v[q]];
                a[i+1][(j*10+v[q])%k].x%=mod;
                a[i+1][(j*10+v[q])%k].vc[v[q]]%=mod;
                }
        }
    if(a[1][v[q]%k].vc[v[q]]==0)
        {
        a[1][v[q]%k].vc[v[q]]=1;
        a[1][v[q]%k].x=1;
        }
    }
for(i=a1;i<=b;i++)
    {
    s1+=a[i][0].x;
    s1%=mod;
    }
printf("%d",s1);
return 0;
}