Pagini recente » Cod sursa (job #1739444) | Cod sursa (job #2556110) | Cod sursa (job #2389780) | Cod sursa (job #333500) | Cod sursa (job #1721487)
#include <bits/stdc++.h>
#define maxN 20
using namespace std;
int i,j,v[maxN],nrc,p,maxC,mask;
long long dp[maxN][1<<maxN],n;
inline int modu(int x)
{
while(x>=p)
x-=p;
return x;
}
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;
maxC=(1<<nrc);
dp[0][0]=1;
for(mask=0;mask<maxC-1;mask++)
for(j=0;j<p;j++)
{
if(dp[j][mask]==0) continue;
for(i=0;i<nrc;i++)
{
if((mask&(1<<i))) continue;
dp[modu(10*j+v[i])][mask|(1<<i)]+=dp[j][mask];
}
}
printf("%lld",dp[0][maxC-1]);
return 0;
}