Pagini recente » Cod sursa (job #2215063) | Cod sursa (job #1277454) | Cod sursa (job #2010473) | Cod sursa (job #1763832) | Cod sursa (job #2395846)
#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=(int)log10(n)+1;
built_pow(nr);
for(int i=0; i<nr; ++i)
{
v[nr-i-1]=n%10;
n/=10LL;
}
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])%p]+=dp[i][rest];
}
}
}
printf("%lld\n",dp[power[nr]-1][0]);
return 0;
}