Cod sursa(job #465331)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 23 iunie 2010 21:17:52
Problema Ratphu Scor Ascuns
Compilator cpp Status done
Runda Marime 0.89 kb
#include <cstdio>

using namespace std;

#define MAXN 18                 // Asta tb sa fie 19?
#define MAXP 20
#define LL long long

LL N; int P;
int cif[MAXN];
int nr[1 << MAXN][MAXP];        // Asta tb sa fie LL?

int main() {
    freopen("ratphu.in", "rt", stdin);
#ifndef DEBUG
    freopen("ratphu.out", "wt", stdout);
#endif

    scanf("%lld %d", &N, &P);
    int len = 0;
    for (; N; N /= 10) {
        cif[len] = N % 10;
        len += 1;
    }
    nr[0][0] = 1;
    for (int i = 0; i < (1 << len); i++) {
        for (int j = 0; j < P; j++) {
            if (!nr[i][j]) {
                continue;
            }
            for (int k = 0; k < len; k++) {
                if (i & (1 << k)) {
                    continue;
                }
                nr[i | (1 << k)][(j * 10 + cif[k]) % P] += nr[i][j];
            }
        }
    }

    printf("%d\n", nr[(1 << len) - 1][0]);

    return 0;
}