Pagini recente » Cod sursa (job #93789) | Cod sursa (job #1602949) | Cod sursa (job #2432443) | Cod sursa (job #657464) | Cod sursa (job #1707589)
#include <bits/stdc++.h>
#define maxN 19
using namespace std;
int maxC,i,j,mask;
long long dp[1<<maxN][maxN];
int v[maxN],nrc;
long long p,n;
int main()
{
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
scanf("%lld %d",&n,&p);
while(n)
v[nrc++]=n%10,n/=10;
dp[0][0]=1;
maxC=(1<<nrc);
for(mask=0;mask<maxC-1;mask++)
{
for(i=0;i<nrc;i++)
if(!(mask&(1<<i)))
for(j=0;j<p;j++)
{
dp[mask|(1<<i)][(10*j+v[i])%p]+=dp[mask][j];
}
}
printf("%lld",dp[maxC-1][0]);
return 0;
}