Pagini recente » Cod sursa (job #2522383) | Cod sursa (job #466887) | Cod sursa (job #1010710) | Cod sursa (job #2466033) | Cod sursa (job #2306163)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
const int MaxCif = 18;
const int MaxP = 20;
string N;
int L, P;
long long D[1<<MaxCif][MaxP];
void Dyn();
int main()
{
fin >> N >> P;
L = N.size();
Dyn();
fout << D[(1 << L) - 1][0];
fin.close();
fout.close();
return 0;
}
void Dyn()
{
D[0][0] = 1;
for (int mask = 0; mask < (1 << L); ++mask)
for (int r = 0; r < P; ++r)
{
if ( !D[mask][r] )
continue;
for (int k = 0; k < L; ++k)
{
if ( mask & (1 << k) )
continue;
D[mask ^ (1 << k)][(10*r + (N[k] - '0')) % P] += D[mask][r];
}
}
}