Pagini recente » Cod sursa (job #1239136) | Cod sursa (job #426522) | Cod sursa (job #1598262) | Cod sursa (job #2495411) | Cod sursa (job #1164397)
//#include <fstream>
#include <cstdio>
using namespace std;
long long mat[1<<18][20],n;
int main()
{
int lung,i,j,rest,k,num[22];
//ifstream fin("ratphu.in");
//ofstream fout("ratphu.out");
//fin>>n>>k;
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
scanf("%lld %d",&n,&k);
for (lung=0;n>0;n/=10) {
num[lung++]=n%10;
}
mat[0][0]=1;
for (i=0;i <(1<<lung);++i){
for (rest=0;rest<k;++rest){
if (mat[i][rest]){
for (j=0;j<lung;++j){
if (!((1<<j)&i)){
mat[i+(1<<j)][(rest*10 + num[j])%k]+=mat[i][rest];
}
}
}
}
}
//fout<<mat[(1<<lung)-1][0]<<'\n';
printf("%lld\n",mat[(1<<lung)-1][0]);
return 0;
}