Pagini recente » Cod sursa (job #2368521) | Cod sursa (job #1010711) | Cod sursa (job #427563) | Cod sursa (job #2345534) | Cod sursa (job #1436957)
#include <fstream>
using namespace std;
const int lmax = 262145;
const int pmax = 21;
std::ifstream in("ratphu.in");
std::ofstream out("ratphu.out");
int digits[20];
long long int sol[lmax][pmax];
int main() {
long long int n;
int p;
int l = 0;
in >> n >> p;
while (n) {
digits[l++] = n % 10;
n /= 10;
}
sol[0][0] = 1;
for (int i = 0; i < (1 << l); ++i)
for (int j = 0; j < l; ++j)
if ((i & (1 << j)) == 0) {
int tmp = i | (1 << j);
for (int k = 0; k < p; ++k)
sol[tmp][(k * 10 + digits[j]) % p] += sol[i][k];
}
out << sol[(1 << l) - 1][0] << '\n';
return 0;
}