Cod sursa(job #748129)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 12 mai 2012 15:44:28
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
//#include<iostream>
//#include<fstream>
#include<cstdio>

using namespace std;

long long d[(1 << 18) + 1][20];
int cifre[22];

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

int main()
{
	freopen("ratphu.in", "r", stdin);
	freopen("ratphu.out", "w", stdout);
	
	long long n;
	int i, j, k, p, nr = 0;
	
	//in >> n >> p;
	scanf("%lld %d", &n, &p);
	
	do{
		cifre[ nr++ ] = n % 10;
		n /= 10;
	}while(n);
	
	for(i = 0; i < nr; ++i)
		++d[1 << i][cifre[i] % p];
	
	for(i = 1; i <= (1 << nr); ++i)
		for(j = 0; j < p; ++j)
			if(d[i][j])
				for(k = 0; k < nr; ++k)
					if(!(i & (1 << k)))
						d[i | (1 << k)][(j * 10 + cifre[k]) % p] += d[i][j];
					
	//out << d[(1 << nr) - 1][0];
	printf("%lld", d[(1 << nr) - 1][0]);
	return 0;
}