Cod sursa(job #3315968)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 16 octombrie 2025 17:10:54
Problema Diviz Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <cstring>
#define mod 30103
#define nmax 201
using namespace std;
ifstream cin("diviz.in");
ofstream cout("diviz.out");
int n,k,a,b,dp[2][nmax][101],sol,t;
string s;
int main()
{
    cin>>k>>a>>b>>s;
    n=s.size();
    for(int i=1;i<=n;i++){
        for(int r=0;r<k;r++)
            dp[t][1][r]=(dp[1-t][1][r]||(r==(s[i-1]-'0')%k));
        for(int j=2;j<=min(i,b);j++){
            if(j!=i)
                for(int r=0;r<k;r++)
                    dp[t][j][r]=dp[1-t][j][r];
            else
                for(int r=0;r<k;r++)
                    dp[t][j][r]=0;
            int rest=(s[i-1]-'0')%k;
            for(int r=0;r<k;r++)
                if(!(j==2&&(r*10+rest)%k==0))
                    dp[t][j][(r*10+rest)%k]=(dp[t][j][(r*10+rest)%k]+dp[1-t][j-1][r])%mod;
        }
        t=1-t;
    }
    for(int i=a;i<=b;i++)
        sol=(sol+dp[1-t][i][0])%mod;
    cout<<sol;
    return 0;
}