Cod sursa(job #3217217)

Utilizator Theo20067Cismaru Theodor-Alexe Theo20067 Data 21 martie 2024 20:11:21
Problema Diviz Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
ifstream fin ("diviz.in");
ofstream fout("diviz.out");
int n,z,k,sol,l,a,b,j,i,V[202],D[202][101],ant[202][102][11];
const int MOD=30103;
string s;
int main()
{
    fin>>k>>a>>b;
    fin>>s;
    for(i=0;i<s.size();i++)
        V[i+1]=s[i]-'0';
    D[0][0]=1;
    n=s.size();
    for(i=1;i<=n;i++)
    {
        for(l=i-1;l>=0;l--)
            for(j=k-1;j>=0;j--)
            {
                if(l==0&&j==0&&V[i]==0)
                    continue;
                if(D[l][j])
                {
                    int nj=(j*10+V[i])%k;
                    D[l+1][nj]=(D[l+1][nj]+D[l][j]-ant[l][j][V[i]])%MOD;
                    if(D[l+1][nj]<0)
                        D[l+1][nj]+=MOD;
                    ant[l][j][V[i]]=D[l][j];
                }
            }
    }

    sol=0;
    for(i=a;i<=b;i++)
        sol=(sol+D[i][0])%MOD;
    fout<<sol%MOD;
    return 0;
}