Pagini recente » Cod sursa (job #1177155) | Cod sursa (job #1364872) | Cod sursa (job #1177904) | Cod sursa (job #1898343) | Cod sursa (job #1434210)
#include <fstream>
#include <cmath>
using namespace std;
long long d[(1 << 18) + 1][20];
int main()
{
long long N;
int P, i;
ifstream f("ratphu.in");
f >> N >> P;
f.close();
int digitsOfN = log10(N) + 1;
int digits[digitsOfN], k = 0;
while(N)
{
digits[k] = N % 10;
N /= 10;
k++;
}
int j, upperBound = 1 << digitsOfN;
d[0][0] = 1;
for (i = 0; i < upperBound; i++)
for (j = 0; j < digitsOfN; j++)
if ((i & (1 << j)) == 0)
for (k = 0; k < P; k++)
d[i | (1 << j)][(k * 10 + digits[j]) % P] += d[i][k];
ofstream g("ratphu.out");
g << d[upperBound - 1][0];
g.close();
return 0;
}