Pagini recente » Cod sursa (job #2849905) | Cod sursa (job #2807762) | Cod sursa (job #1967470) | Cod sursa (job #476205) | Cod sursa (job #2627224)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
const int DIM = (1 << 18);
const int P = 20;
long long dp[DIM][P];
int cif[P];
int it;
main()
{
long long n;
int p;
fin >> n >> p;
while(n)
{
cif[++it] = n % 10;
n /= 10;
}
dp[0][0] = 1;
int mx = (1 << (it)) - 1;
for(int mask = 0; mask <= mx; ++mask)
for(int r = 0; r < p; ++r)
if(dp[mask][r] > 0)
for(int bit = 0; bit < it; ++bit)
if((mask & (1 << bit)) == 0)
dp[(mask ^ (1 << bit))][(r * 10 + cif[bit + 1]) % p] += dp[mask][r];
fout << dp[mx][0] << '\n';
}