Pagini recente » Cod sursa (job #2651314) | Cod sursa (job #1328698) | Cod sursa (job #797712) | Cod sursa (job #2632851) | Cod sursa (job #1258520)
#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) {
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!