Cod sursa(job #7096)

Utilizator StTwisterKerekes Felix StTwister Data 21 ianuarie 2007 12:28:07
Problema Diviz Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasele 11-12 Marime 0.76 kb
#include <stdio.h>

#define NMAX 202
#define MOD 30103

char S[NMAX];
int viz[NMAX], x[NMAX];
int K, A, B, N;
int sol;

void check(int nr)
{
    int i, t = 0;
    for (i = nr; i>0; --i)
        t = (t*10 + x[i]) % K;
    if (!t) ++sol;
}

void back(int k, int off)
{
    if (k<=N)
    {
        for (int i = off; i<=N; ++i)
        {
            x[k] = S[i];
            if (A<=k && k<=B)
                check(k);
            back(k+1, i+1);
        }
    }
}

int main()
{
    freopen("diviz.in", "r", stdin);
    freopen("diviz.out", "w", stdout);
    
    scanf("%d %d %d\n", &K, &A, &B);
    
    gets(S+1);
    
    for (N = 1; S[N]; ++N);
    --N;
    
    sol = 0;
    back(1, 1);
    
    printf("%d\n", sol % MOD);
}