Cod sursa(job #1443262)

Utilizator fhandreiAndrei Hareza fhandrei Data 27 mai 2015 13:22:40
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
// FMI - Grupa 135 - Semigrupa 2 - Hareza Andrei
// Include
#include <fstream>
#include <algorithm>
using namespace std;

// Variabile
ifstream in("ratphu.in");
ofstream out("ratphu.out");

int c[20], p;
long long n, np[1 << 18][20];

// Main
int main()
{
	in >> n >> p;
	
	int s = 0;
	while (n)
	{
		c[s++] = n % 10;
		n /= 10;
	}
	reverse(c, c + s);
	
	np[0][0] = 1;
	for (int i = 0; i < (1 << s); ++i)
		for (int j = 0; j < p; ++j)
			if (np[i][j])
				for (int k = 0; k < s; ++k)
					if ((i & (1 << k)) == 0)
						np[i | (1 << k)][(j * 10 + c[k]) % p] += np[i][j];
	
	out << np[(1 << s) - 1][0] << '\n';
	
	in.close();
	out.close();
	return 0;
}