Cod sursa(job #1331976)

Utilizator akaprosAna Kapros akapros Data 1 februarie 2015 15:04:23
Problema Diviz Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,i,j,k,p,q,l,sol;
int a[201][201],w[15][205][205];
int v[201];
char s[201];
int main()
{
    freopen("diviz.in","r",stdin);
    freopen("diviz.out","w",stdout);
    scanf("%d %d %d\n",&k,&p,&q);
    gets(s+1);
    n=strlen(s+1);
    for (i=1;i<=n;i++)
    {
        v[++v[0]]=s[i]-'0';
        //a[1][v[v[0]]%k]++;
    }
    a[0][0]=1;
    for (i=1;i<=n;i++)
    for (l=min(i,n);l>=1;l--)
    {
        for (j=0;j<k;j++)
        if (a[l-1][j])
        {
            a[l][((j*10)+v[i])%k]
            =(a[l][((j*10)+v[i])%k]+a[l-1][j]
              -w[v[i]][l][((j*10)+v[i])%k]+30103)%30103;
           w[v[i]][l][((j*10)+v[i])%k]
            =(w[v[i]][l][((j*10)+v[i])%k]+a[l-1][j])%30103;
        }
    }
    sol=0;
    for (l=p;l<=q;l++)
    sol=(sol+a[l][0])%30103;
    printf("%d",sol);
    return 0;
}