Pagini recente » Cod sursa (job #3176273) | Cod sursa (job #2345903) | Cod sursa (job #2488419) | Cod sursa (job #692594) | Cod sursa (job #3228912)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
int p;
string s;
long long n, np[1 << 18][20];
// nr[i][j] = numarul de posibilitati cu cifrele din masca i
// care reprezinta un numar nr cu restul nr % p = ji
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
int main()
{
fin >> s >> p;
int len = s.size();
np[0][0] = 1;
for (int i = 0; i < (1 << len); ++i)
for (int j = 0; j < p; ++j)
if (np[i][j])
for (int k = 0; k < len; ++k)
if ((i & (1 << k)) == 0)
np[i | (1 << k)][(j * 10 + s[k] - '0') % p] += np[i][j];
fout << np[(1 << len) - 1][0];
return 0;
}