Cod sursa(job #1258522)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 8 noiembrie 2014 23:51:25
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#define DIM 20
#define infile "ratphu.in"
#define outfile "ratphu.out"

using namespace std;

ifstream f(infile);
ofstream g(outfile);

long long D[1 << DIM][DIM];

int Digits[DIM];

char s[DIM];

int p;

int main() {
	f >> s >> p;
	int nr_digits = 0;
	for (int i = 0; s[i]; ++i, ++nr_digits)
		Digits[i] = s[i] - '0';
	D[0][0] = 1;
	for (int config = 0; config < (1 << nr_digits); ++config) {
		for (int i = 0; i < p; ++i) {
			if (!D[config][i])
				continue;
			for (int j = 0; j < nr_digits; ++j) {
				if (!((1 << j) & config)) {
					int crt = i*10 + Digits[j];
					while (crt >= p)
						crt -= p;
					D[config | (1 << j)][crt] += D[config][i];
				}
			}
		}
	}
	g << D[(1 << nr_digits) - 1][0];
	return 0;
}

//Trust me, I'm the Doctor!