Cod sursa(job #473433)

Utilizator blasterzMircea Dima blasterz Data 29 iulie 2010 13:45:00
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
// 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++] = static_cast <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;
}