Pagini recente » Cod sursa (job #2842752) | Cod sursa (job #165652) | Cod sursa (job #363367) | Cod sursa (job #445521) | Cod sursa (job #2395849)
#include<cstdio>
#include<cmath>
using namespace std;
int v[20];
long long dp[262150][25];
int power[20];
void built_pow(int n)
{
power[0]=1;
for(int i=1; i<=n; ++i)
power[i]=power[i-1]<<1;
}
int main()
{
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
long long n;
int p;
scanf("%lld%d",&n,&p);
int nr=0;
while(n)
{
v[++nr]=n%10;
n=n/10LL;
}
built_pow(nr);
dp[0][0]=1;
for(int i=0; i<power[nr]; ++i)
{
for(int rest=0; rest<p; ++rest)
{
for(int b=0; b<nr; ++b)
if(!(i&power[b]))
{
dp[i+power[b]][(rest*10+v[b+1])%p]+=dp[i][rest];
}
}
}
printf("%lld\n",dp[power[nr]-1][0]);
return 0;
}