Pagini recente » Cod sursa (job #1777955) | Cod sursa (job #970228) | Cod sursa (job #2553358) | Cod sursa (job #2367263) | Cod sursa (job #1258521)
#include <fstream>
#define DIM 20
#define infile "ratphu.in"
#define outfile "ratphu.out"
using namespace std;
ifstream f(infile);
ofstream g(outfile);
long long D[1 << DIM][DIM];
int Digits[DIM];
char s[DIM];
int p;
int main() {
f >> s >> p;
int nr_digits = 0;
for (int i = 0; s[i]; ++i, ++nr_digits)
Digits[i] = s[i] - '0';
D[0][0] = 1;
for (int config = 0; config < (1 << nr_digits); ++config) {
for (int i = 0; i < p; ++i) {
if (!D[config][i])
continue;
for (int j = 0; j < nr_digits; ++j) {
if (!((1 << j) & config)) {
int crt = (i*10 + Digits[j]) % p;
D[config | (1 << j)][crt] += D[config][i];
}
}
}
}
g << D[(1 << nr_digits) - 1][0];
return 0;
}
//Trust me, I'm the Doctor!