Pagini recente » Cod sursa (job #1207067) | Cod sursa (job #1129714) | Cod sursa (job #439966) | Cod sursa (job #1243476) | Cod sursa (job #1775150)
#include<bits/stdc++.h>
using namespace std;
long long n;
int p,v[25],dv,mask,dp[(1<<20)+5][25],x;
int main()
{
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
scanf("%lld",&n);
scanf("%d",&p);
while(n)
{
v[++dv]=n%10;
n/=10;
}
for(int i=1;i<=dv;i++)
{
mask=(1<<(dv-i));
dp[mask][(v[i]%p)]++;
}
x=(1<<dv)-1;
for(int mask=0;mask<=x;mask++)
{
for(int j=1;j<=dv;j++)
{
if(!(mask & (1<<(dv-j))))
{
for(int rest=0;rest<p;rest++)
{
dp[mask|(1<<(dv-j))][(rest*10+v[j])%p]+=dp[mask][rest];
}
}
}
}
printf("%d\n",dp[x][0]);
return 0;
}