Cod sursa(job #1322471)

Utilizator stanescu.raduRadu Stanescu stanescu.radu Data 20 ianuarie 2015 03:18:29
Problema Ratphu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#define MAX_N (1 << 18) + 5

using namespace std;

ifstream f ("ratphu.in");
ofstream g("ratphu.out");

string s;
int p;
int d[MAX_N][25];

void read ()
{
	f >> s >> p;
}

void solve ()
{
	int lg = 1 << s.size();
	int dim = s.size();
	for (int i = 0; i < dim; i++)
	{
		//int x = (s[i] - '0') % p;
		s[i] = (s[i] - '0') % p;
		d[1 << i][s[i]] = 1;
	}
	
	for (int i = 0; i < lg; i++)
		for (int j = 0; j < dim; j++)
			if ( (i & (1 << j) ) == 0)
                for (int k = 0; k < p; k++)
                        d[i | (1 << j)][(k * 10 + s[j]) % p] += d[i][k];
				
	g << d[lg - 1][0];
}

int main ()
{
	read();
	solve();
	return 0;
}