Pagini recente » Cod sursa (job #784792) | Cod sursa (job #1666554) | Cod sursa (job #89543) | Cod sursa (job #1110514) | Cod sursa (job #473432)
Cod sursa(job #473432)
// infoarena -problema ratphu
// @author: Mircea Dima
#include <cstdio>
#include <cstring>
int a[20];
int n;
int P;
long long dp[(1 << 18) + 1][20];
int main ()
{
freopen ("ratphu.in", "r", stdin);
freopen ("ratphu.out", "w", stdout);
long long val;
scanf ("%lld %d", &val, &P);
while (val)
a[n++] = int (val % 10),
val /= 10;
int i, j, k;
dp[0][0] = 1;
for (i = 0; i < (1 << n); ++i)
for (j = 0; j < P; ++j)
for (k = 0; k < n; ++k)
if ((i & (1 << k)) == 0)
dp[i | (1 << k)][(j * 10 + a[k]) % P] += dp[i][j];
printf ("%lld\n", dp[(1 << n) - 1][0]);
return 0;
}