Cod sursa(job #1444161)

Utilizator danielmaxim95FMI Maxim Daniel danielmaxim95 Data 29 mai 2015 12:20:12
Problema Ratphu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#define NMAX 22

using namespace std;

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

void citeste()
{
	FILE *f = fopen("ratphu.in", "r");
	fscanf(f, "%lli%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();
}