Pagini recente » Cod sursa (job #2649357) | Cod sursa (job #1585354) | Cod sursa (job #1173573) | Cod sursa (job #1475067) | Cod sursa (job #1264936)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
const int CONFMAX=262150;
const int PMAX=21;
int p,len,cif[PMAX],modulo[1000];
long long n,dp[CONFMAX][PMAX];
map<int,int>viz;
int main()
{
int i,conf,maxim,aux,auxx;
fin>>n>>p;
while (n)
{
cif[len]=n%10;
len++;
n/=10;
}
//preprocesare
for (i=0;i<1000;i++) modulo[i]=i%p;
for (i=0;i<len;i++)
{
viz[1<<i]=i;
dp[1<<i][modulo[cif[i]]]=1;
}
maxim=1<<len;
for (conf=1;conf<maxim;conf++)
{
aux=conf;
while (aux)
{
auxx=aux^(aux&(aux-1));
aux-=auxx;
for (i=0;i<p;i++)
dp[conf][modulo[i*10+cif[viz[auxx]]]]+=dp[conf-auxx][i];
}
}
fout<<dp[maxim-1][0]<<"\n";
return 0;
}