Pagini recente » Cod sursa (job #218749) | Cod sursa (job #2677192) | Cod sursa (job #2280551) | Cod sursa (job #829844) | Cod sursa (job #1234262)
#include <fstream>
using namespace std;
char str[20];
int p, N, digit[18], lim;
long long dp[1 << 18][20];
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
int main() {
fin >> str >> p;
for (N = 0; str[N]; ++N) {
digit[N] = str[N] - '0';
dp[1 << N][digit[N] % p] = 1;
}
lim = 1 << N;
for (int conf = 1; conf < lim; ++conf)
for (int dg = 0; dg < N; ++dg)
if (!(conf & (1 << dg)))
for (int rest = 0; rest < p; ++rest)
dp[conf | (1 << dg)][(rest * 10 + digit[dg]) % p] += dp[conf][rest];
fout << dp[lim - 1][0] << "\n";
return 0;
}