Pagini recente » Cod sursa (job #3257670) | Cod sursa (job #685114) | Cod sursa (job #2668933) | Cod sursa (job #934830) | Cod sursa (job #2860448)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
int N;
char s[21];
int p, a[21], n;
long long dp[(1 << 18)][21];
int lele[21][21];
int main()
{
int i, j, stare;
fin >> (s + 1);
fin >> p;
n = strlen(s + 1);
for(i = 1;i <= n;i++)
a[i] = (s[i] - '0');
for(i = 1;i <= n;i++)
dp[1 << (i - 1)][a[i] % p] = 1;
N = (1 << n) - 1;
for(i = 1;i <= n;i++)
for(j = 0;j < p;j++)
lele[i][j] = (j * 10 + a[i]) % p;
for(stare = 1;stare <= N;stare++)
for(i = 1;i <= n;i++)
if((stare & (1 << i - 1)) == 0)
for(j = 0;j < p;j++)
{
int masca = stare | (1 << (i - 1));
dp[masca][lele[i][j] % p] += dp[stare][j];
}
fout << dp[N][0] << "\n";
return 0;
}