Pagini recente » Cod sursa (job #2405178) | Cod sursa (job #154648) | Istoria paginii runda/cnrv_1/clasament | Cod sursa (job #1626584) | Cod sursa (job #745272)
Cod sursa(job #745272)
#include<iostream>
#include<fstream>
using namespace std;
long long d[1 << 20][20], n;
int cifre[30], p, nr;
ifstream in("ratphu.in");
ofstream out("ratphu.out");
void dinamica()
{
int i, j, k;
do{
cifre[ nr++ ] = n % 10;
n /= 10;
}while(n);
d[0][0] = 1;
for(i = 0; i < (1 << nr); ++i)
for(j = 0; j < p; ++j)
if(d[i][j])
for(k = 0; k < nr; ++k)
if(!((1 << k) & i))
d[i + (1 << k)][(j * cifre[k]) % p] += d[i][j];
}
int main()
{
in >> n >> p;
dinamica();
out << d[(1 << nr) - 1][0];
return 0;
}