Pagini recente » Cod sursa (job #50064) | Cod sursa (job #3284497) | Cod sursa (job #1285180) | Cod sursa (job #2866386) | Cod sursa (job #466066)
Cod sursa(job #466066)
#include<cstring>
#include<fstream>
#include<queue>
using namespace std;
#define c(i) (n[i] - '0')
char n[1 << 18];
long long p, np[1 << 18][20]; // numarul de posibilitati luand configuratia 'i', sa am restul 0
queue<int> q;
int main()
{
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
fin >> n >> p;
int s = strlen(n);
//PD
np[0][0] = 1;
for (int i = 0; i < (1 << s); ++i)
for (int j = 0; j < p; ++j)
if (np[i][j])
for (int k = 0; k < s; ++k)
if ((i & (1 << k)) == 0)
np[i + (1 << k)][(j * 10 + c(k)) % p] += np[i][j];
fout << np[(1 << s) - 1][0];
}