Pagini recente » Cod sursa (job #1846387) | Cod sursa (job #2386959) | Cod sursa (job #270542) | Cod sursa (job #2821393) | Cod sursa (job #528761)
Cod sursa(job #528761)
#include <cstdio>
#include <algorithm>
const int MAXP = 20;
const int MAXPP = 262300;
using namespace std;
int P, C[MAXP], c, m, bit, i;
long long sol[MAXPP][MAXP], N;
int main ()
{
freopen ("ratphu.in", "r", stdin);
freopen ("ratphu.out", "w", stdout);
for (scanf ("%lld%d\n", &N, &P); N; ) {
C[c++] = N % 10; // c++
N /= 10;
}
sol[0][0] = 1;
for (m = 0; m < (1 << c); m++)
for (i = 0; i < P; i++) {
if (!sol[m][i])
continue;
for (bit = 0; bit < c; bit++)
if (!(m & (1 << bit)))
sol[m | (1 << bit)][(i * 10 + C[bit]) % P] += sol[m][i];
}
printf ("%lld\n", sol[(1 << c) - 1][0]);
return 0;
}