Cod sursa(job #1444160)

Utilizator danielmaxim95FMI Maxim Daniel danielmaxim95 Data 29 mai 2015 12:15:05
Problema Ratphu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>
#define NMAX 21

using namespace std;

int nc = 0, n, p, v[NMAX], matr[1 << NMAX][NMAX], lim;

void citeste()
{
	FILE *f = fopen("ratphu.in", "r");
	fscanf(f, "%i%i", &n, &p);
	fclose(f);

	while (n)
	{
		v[nc++] = n % 10;
		n /= 10;
	}

	lim = 1 << nc;
}

void parcurge()
{
	matr[0][0] = 1;

	for (int i = 0; i < lim; ++i)
			for (int j = 0; j < nc; ++j)
				if ((i & (1 << j)) == 0)
					for (int k = 0; k < p; ++k)
						matr[i | (1 << j)][(k * 10 + v[j]) % p] += matr[i][k];

}

void afiseaza()
{
	FILE *f = fopen("ratphu.out", "w");
	fprintf(f, "%i", matr[lim-1][0]);
	fclose(f);
}

int main()
{
	citeste();
	parcurge();
	afiseaza();
}