Cod sursa(job #466069)

Utilizator darrenRares Buhai darren Data 25 iunie 2010 22:51:47
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<cstring>
#include<fstream>
#include<queue>
using namespace std;

#define c(i) (n[i] - '0')

char n[20];
long long p, np[1 << 18][20]; // numarul de posibilitati luand configuratia 'i', sa am restul 0
queue<int> q;
int main()
{
	ifstream fin("ratphu.in");
	ofstream fout("ratphu.out");
	fin >> n >> p;
	int s = strlen(n);
	
	//PD
	int i, j, k;
	np[0][0] = 1;
	for (i = 0; i < (1 << s); ++i)
		for (j = 0; j < p; ++j)
			if (np[i][j])
				for (k = 0; k < s; ++k)
					if ((i & (1 << k)) == 0)
						np[i | (1 << k)][(j * 10 + c(k)) % p] += np[i][j];
	
	fout << np[(1 << s) - 1][0];
}