Pagini recente » Cod sursa (job #2367932) | Cod sursa (job #2305863) | Cod sursa (job #1996371) | Cod sursa (job #729564) | Cod sursa (job #2637863)
#include <bits/stdc++.h>
#define newline '\n'
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
///**********************
using ll = long long;
const int DMAX = 21, STATEMAX = (1 << 18);
ll dp[STATEMAX][DMAX];
int nr[DMAX], nrcif, p;
ll n;
int main() {
fin >> n >> p;
while (n) {
nr[nrcif++] = n % 10;
n /= 10;
}
int finstate = (1 << nrcif) - 1;
dp[0][0] = 1;
for (int state = 0; state <= finstate; state++) {
for (int i = 0; i < nrcif; i++) {
if (state & (1 << i))
continue;
for (int rem = 0; rem < p; rem++) {
int newState = state | (1 << i);
int newRem = (rem * 10 + nr[i]) % p;
dp[newState][newRem] += dp[state][rem];
}
}
}//*/
fout << dp[finstate][0] << newline;
fout.close();
return 0;
}