Pagini recente » Istoria paginii utilizator/vladulescu_irina_georgiana_322ca | Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2254080)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("ratphu.in");
ofstream out ("ratphu.out");
const int VMAX = (1 << 18);
long long n, p;
string s;
int v[21];
long long dp[VMAX][21];
int mod[211];
int main() {
in >> s >> p;
n = s.size();
for(int i = 0; i < n; i++)
v[i] = s[i] - '0';
dp[0][0] = 1;
for(int i = 1; i < 210; i++)
mod[i] = i % p;
for(int i = 0; i < (1 << n) - 1; i++) {
for(int j = 0; j < p; j++) {
if(dp[i][j] == 0)
continue;
for(int k = 0; k < n; k++) {
if(!(i & (1 << k)))
dp[i | (1 << k)][mod[j * 10 + v[k]]] += dp[i][j];
}
}
}
out << dp[(1 << n) - 1][0];
return 0;
}