Pagini recente » Cod sursa (job #1209072) | Cod sursa (job #3186580) | Cod sursa (job #1266462) | Cod sursa (job #762265) | Cod sursa (job #2253960)
#include <bits/stdc++.h>
using namespace std;
long long n;
int p;
long long dp[1 << 18][20];
vector <int> cifre;
int main() {
ifstream f("ratphu.in");
ofstream g("ratphu.out");
f >> n >> p;
while (n){
cifre.push_back(n % 10);
n = n / 10;
}
reverse(cifre.begin(), cifre.end());
for (int i = 0; i < (1 << cifre.size()); ++i ){
for( int j = 0; j < p; ++j ){
dp[i][j] = 0;
}
}
int rest [300];
for (int i = 0; i < 300; ++ i) rest [i] = i % p;
dp[0][0] = 1;
for (int i = 0; i < ( 1 << cifre.size()); ++i){
for (int j = 0; j < p; ++j){
for (int bit = 0; bit < cifre.size(); ++ bit)
if (not (i & (1 << bit)))
dp[i ^ (1 << bit)][rest[(j * 10 + cifre[bit])]] += dp [i][j];
}
}
g << dp[(1 << cifre.size()) - 1][0];
return 0;
}