Cod sursa(job #1444168)

Utilizator danielmaxim95FMI Maxim Daniel danielmaxim95 Data 29 mai 2015 12:26:32
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.71 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, "%lli", matr[lim-1][0]);
	fclose(f);
}

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