Pagini recente » Cod sursa (job #1446929) | Cod sursa (job #936495) | Cod sursa (job #29552) | Cod sursa (job #2116074) | Cod sursa (job #465331)
Cod sursa(job #465331)
#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;
}