Pagini recente » Cod sursa (job #82626) | Cod sursa (job #181494) | Cod sursa (job #1831717) | Cod sursa (job #1789509) | Cod sursa (job #2182088)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ratphu.in");
ofstream out("ratphu.out");
const int MSK_MAX = 524287, P_MAX = 20;
string n;
int p;
long long dp[MSK_MAX + 2][P_MAX + 2];
int main()
{
in >> n >> p;
dp[0][0] = 1;
int lim = (1 << n.length());
for(int msk = 0; msk < lim; msk++)
for(int rest = 0; rest < p; rest++)
{
for(int bit = 0; bit < n.length(); bit++)
if(!(msk & (1 << bit)))
{
int nr = n[bit] - '0';
dp[msk | (1 << bit)][(rest * 10 + nr) % p] += dp[msk][rest];
}
}
out << dp[lim - 1][0] << '\n';
return 0;
}