Pagini recente » Cod sursa (job #2028536) | Cod sursa (job #3240876) | Cod sursa (job #451362) | Probleme de Taietura | Cod sursa (job #1993244)
#include <bits/stdc++.h>
using namespace std;
int i, mask, n, p, rest, now;
long long dp[1 << 18][20];
string dig;
int main() {
ifstream cin("ratphu.in");
ofstream cout("ratphu.out");
ios_base::sync_with_stdio(0);
cin >> dig >> p; n = dig.size();
dp[0][0] = 1;
for(mask = 0; mask < (1 << n) - 1; ++mask) {
for(rest = 0; rest < p; ++rest) {
if(!dp[mask][rest]) continue;
for(i = 0; i < n; ++i) {
if(mask & (1 << i)) continue;
now = (rest * 10 + dig[i] - '0') % p;
dp[mask | (1 << i)][now] += dp[mask][rest];
}
}
}
cout << dp[(1 << n) - 1][0] << '\n';
return 0;
}