Cod sursa(job #2644466)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 24 august 2020 18:07:56
Problema Diviz Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
#define MOD 30103

using namespace std;

int k,a,b,fr[2][202][105],n;
string v;

void sum(int &a, int b){
    a += b;
    if (a >= MOD) a -= MOD;
}

int main()
{
    cin.sync_with_stdio(false);
    freopen("diviz.in","r",stdin);
    freopen("diviz.out","w",stdout);

    cin >> k >> a >> b >> v;

    n = v.size();

    fr[0][0][0] = 1;
    for (int i=1;i<=n;i++){
        memset(fr[i&1], 0 ,sizeof(fr[i&1]));
        for (int cif=0;cif<=i;cif++)
            for (int j=0;j<k;j++){
                sum(fr[i&1][cif+1][(j * 10 + v[i-1] - '0') % k], fr[i&1^1][cif][j]);
                sum(fr[i&1][cif][j], fr[i&1^1][cif][j]);
            }
    }

    int ans = 0;
    for (int i=a;i<=b;i++){
        sum(ans, fr[n&1][i][0]);
    }

    cout << ans << '\n';

    return 0;
}